# 一. torch.cat（）函数解析

## 1. 函数说明

1.1 官网torch.cat()，函数定义及参数说明如下图所示：

1.2 函数功能

## ; 2. 代码举例

2.1 输入两个二维张量（dim=0）：dim=0对行进行拼接

a = torch.randn(2,3)
b =  torch.randn(3,3)
c = torch.cat((a,b),dim=0)
a,b,c

输出结果如下：
(tensor([[-0.90, -0.37,  1.96],
[-2.65, -0.60,  0.05]]),
tensor([[ 1.30,  0.24,  0.27],
[-1.99, -1.09,  1.67],
[-1.62,  1.54, -0.14]]),
tensor([[-0.90, -0.37,  1.96],
[-2.65, -0.60,  0.05],
[ 1.30,  0.24,  0.27],
[-1.99, -1.09,  1.67],
[-1.62,  1.54, -0.14]]))


2.2 输入两个二维张量（dim=1）: dim=1对列进行拼接

a = torch.randn(2,3)
b =  torch.randn(2,4)
c = torch.cat((a,b),dim=1)
a,b,c

输出结果如下：
(tensor([[-0.55, -0.84, -1.60],
[ 0.39, -0.96,  1.02]]),
tensor([[-0.83, -0.09,  0.05,  0.17],
[ 0.28, -0.74, -0.27, -0.85]]),
tensor([[-0.55, -0.84, -1.60, -0.83, -0.09,  0.05,  0.17],
[ 0.39, -0.96,  1.02,  0.28, -0.74, -0.27, -0.85]]))


2.3 输入两个三维张量：dim=0 对通道进行拼接

a = torch.randn(2,3,4)
b =  torch.randn(1,3,4)
c = torch.cat((a,b),dim=0)
a,b,c

输出结果如下：
(tensor([[[ 0.51, -0.72, -0.02,  0.76],
[ 0.72,  1.01,  0.39, -0.13],
[ 0.37, -0.63, -2.69,  0.74]],

[[ 0.72, -0.31, -0.27,  0.10],
[ 1.66, -0.06,  1.91, -0.66],
[ 0.34, -0.23, -0.18, -1.22]]]),
tensor([[[ 0.94,  0.77, -0.41, -1.20],
[-0.23, -1.03, -0.25,  1.67],
[-1.00, -0.68, -0.35, -0.50]]]),
tensor([[[ 0.51, -0.72, -0.02,  0.76],
[ 0.72,  1.01,  0.39, -0.13],
[ 0.37, -0.63, -2.69,  0.74]],

[[ 0.72, -0.31, -0.27,  0.10],
[ 1.66, -0.06,  1.91, -0.66],
[ 0.34, -0.23, -0.18, -1.22]],

[[ 0.94,  0.77, -0.41, -1.20],
[-0.23, -1.03, -0.25,  1.67],
[-1.00, -0.68, -0.35, -0.50]]]))


2.4 输入两个三维张量：dim=1对行进行拼接

a = torch.randn(2,3,4)
b =  torch.randn(2,4,4)
c = torch.cat((a,b),dim=1)
a,b,c

输出结果如下：
(tensor([[[-0.86,  0.00, -1.26,  1.20],
[-0.46, -1.08, -0.82,  2.03],
[-0.89,  0.43,  1.92,  0.49]],

[[ 0.24, -0.02,  0.32,  0.97],
[ 0.33, -1.34,  0.76, -1.55],
[ 0.38,  1.45,  0.27, -0.64]]]),
tensor([[[ 0.82,  0.85, -0.30, -0.58],
[-0.09,  0.40,  0.02,  0.75],
[-0.70,  0.67, -0.88, -0.50],
[-0.62, -1.65, -1.10, -1.39]],

[[-0.85, -1.61, -0.35, -0.56],
[ 0.00,  1.40,  0.41,  0.39],
[-0.01,  0.04,  0.80,  0.41],
[-1.21, -0.64,  1.14,  1.64]]]),
tensor([[[-0.86,  0.00, -1.26,  1.20],
[-0.46, -1.08, -0.82,  2.03],
[-0.89,  0.43,  1.92,  0.49],
[ 0.82,  0.85, -0.30, -0.58],
[-0.09,  0.40,  0.02,  0.75],
[-0.70,  0.67, -0.88, -0.50],
[-0.62, -1.65, -1.10, -1.39]],

[[ 0.24, -0.02,  0.32,  0.97],
[ 0.33, -1.34,  0.76, -1.55],
[ 0.38,  1.45,  0.27, -0.64],
[-0.85, -1.61, -0.35, -0.56],
[ 0.00,  1.40,  0.41,  0.39],
[-0.01,  0.04,  0.80,  0.41],
[-1.21, -0.64,  1.14,  1.64]]]))


2.5 输入两个三维张量：dim=2对列进行拼接

a = torch.randn(2,3,4)
b =  torch.randn(2,3,5)
c = torch.cat((a,b),dim=2)
a,b,c

输出结果如下：
(tensor([[[ 0.13, -0.02,  0.13, -0.25],
[ 1.42, -0.22, -0.87,  0.27],
[-0.07,  1.04, -0.06,  0.91]],

[[ 0.88, -1.46,  0.04,  0.35],
[ 1.36,  0.64,  0.75,  0.39],
[ 0.36,  1.13,  0.83,  0.56]]]),
tensor([[[-0.47, -2.30, -0.49, -1.02,  1.74],
[ 0.71,  0.89,  0.80, -0.05, -1.35],
[-0.40,  0.26, -0.78, -1.50, -0.92]],

[[-0.77, -0.01,  1.23,  0.70, -0.66],
[ 0.28, -0.18, -0.91,  2.23,  1.14],
[-1.93, -0.17,  0.15,  0.40,  0.32]]]),
tensor([[[ 0.13, -0.02,  0.13, -0.25, -0.47, -2.30, -0.49, -1.02,  1.74],
[ 1.42, -0.22, -0.87,  0.27,  0.71,  0.89,  0.80, -0.05, -1.35],
[-0.07,  1.04, -0.06,  0.91, -0.40,  0.26, -0.78, -1.50, -0.92]],

[[ 0.88, -1.46,  0.04,  0.35, -0.77, -0.01,  1.23,  0.70, -0.66],
[ 1.36,  0.64,  0.75,  0.39,  0.28, -0.18, -0.91,  2.23,  1.14],
[ 0.36,  1.13,  0.83,  0.56, -1.93, -0.17,  0.15,  0.40,  0.32]]]))


Original: https://blog.csdn.net/flyingluohaipeng/article/details/125038212
Author: cv_lhp
Title: Pytorch中torch.cat()函数解析

## Title: [python]从环境变量和配置文件中获取配置参数

python学习笔记之从环境变量和配置文件中获取配置参数

## 前言

• python-dotenv：第三方库，需要使用pip安装
• configparser：标准库

## 示例代码

• test.ini
[mysql]
host = "192.168.0.10"
port = 3306
user = "root"

[postgresql]
host = "192.168.0.11"
port = 5432
user = "postgres"

• demo.py
from configparser import ConfigParser, NoSectionError, NoOptionError
import os

# 如果存在环境变量的文件，则加载配置到环境变量
if os.path.exists("settings.env"):

os_env = os.environ

"""
从文件中读取配置信息

Parameters
----------
filename : str, 配置文件
"""
# 实例化对象
config = ConfigParser()
if not os.path.exists(filename):
raise FileNotFoundError(f"配置文件 {filename} 不存在")
return config

def get_config(config: ConfigParser, section: str, key: str):
"""
根据指定section和key获取value

Parameters
----------
config:  ConfigParser(), 配置实例对象
section: str, 配置文件中的区域
key:     str, 配置的参数名
"""
# 优先从环境变量中获取配置参数, 没有的话再从配置文件中获取
value = os_env.get(key, "")
if not value:
try:
value = config.get(section, key)
except (NoOptionError, NoSectionError):
# 没有的话就返回None
value = None
return value

if __name__ == '__main__':
print(get_config(config, "mysql", "host"))


Original: https://www.cnblogs.com/XY-Heruo/p/16539682.html
Author: 花酒锄作田
Title: [python]从环境变量和配置文件中获取配置参数

(0)

### 大家都在看

• #### 硬核剖析Java锁底层AQS源码，深入理解底层架构设计

我们常见的并发锁 ReentrantLock、 CountDownLatch、 Semaphore、 CyclicBarrier都是基于 AQS实现的，所以说不懂 AQS实现原理的…

Python 2023年1月29日
041

Original: ython ] PyQt5 PySide2 笔记Author: PythonTitle: YEUNGCHIE

Python 2022年9月3日
066
• #### 使用Matplotlib库可视化COCO数据集格式常用函数 (二)

文章目录 前言 可视化标注文件中的检测框 可视化标注文件中的掩码 可视化预测文件的检测框和掩码 同时可视化原始图像，标注结果，预测结果 前言 在文章(一)中我们主要介绍了plt包绘…

Python 2023年1月14日
026
• #### 一个简单的Scrapy项目(房天下)

首先通过命令创建一个Scrapy项目 scrapy startproject xxxx 创建完后通过pycharm软件打开 之后通过命令创建py文件 指定到你想要爬取的网址 scr…

Python 2023年1月25日
024
• #### pyspark DataFrame问题解决

pyspark.sql.DataFrame.dropDuplicates(subset=None) 作用：返回删除重复行的新 DataFrame，可选择仅考虑某些列。 Exampl…

Python 2023年1月8日
026
• #### python怎么用数据修改_python操作数据

三、python操作数据 ””” 1、如何增加数据 2、如何删除数据 3、如何修改数据 4、如何查询数据 ””&#822…

Python 2023年1月7日
030
• #### ResNet网络结构详解（Tensorflow2.6.0实现网络结构）

文章目录 * – 1.ResNetX网络结构表 – + （1）论文地址： + （2）ResNet18网络结构： + （3）ResNet34网络结构： &#8…

2022年8月28日
0176
• #### Pytest简介及jenkins集成

一、pytest介绍 pytest介绍 – unittest\nose pytest：基于unittest之上的单元测试框架 自动发现测试模块和测试方法 断言使用ass…

Python 2023年1月17日
032
• #### Python ❀ 求固定位置自然数最大最小值

Python ❀ 求固定位置自然数最大最小值 原创 无糖可乐没有灵魂2022-06-24 19:19:40博主文章分类：Python ©著作权 文章标签 整除 最大最小值 文章分类…

Python 2022年9月6日
0123
• #### 使用自己数据及进行PointNet++分类网络训练

二、数据集读取 常用数据集 点云数据集_爱学习的小菜鸡的博客-CSDN博客_点云数据集 选用悉尼大学开放的自动驾驶数据集进行训练 方式一：安装snark软件 math-deg2ra…

Python 2023年1月23日
015
• #### 【Call for papers】ICML-2023（CCF-A/人工智能/2023年1月26日截稿）

The International Conference on Machine Learning (ICML) is the premier gathering of profes…

Python 2023年1月27日
038
• #### Python中的数据类dataclass详解

1. 为什么需要数据类 1.1 ☹️内置数据类型的局限 假设我们现在遇到一个场景, 需要一个数据对象来保存一些运动员信息. 可以选择使用基本的数据类型tuple或者dict实现. …

2022年8月28日
0113
• #### Python与机器人技术

http://gashero.iteye.com/blog/2157346 Original: https://www.cnblogs.com/luckgopher/p/50739…

Python 2022年8月14日
082
• #### Python实战项目：为人脸照片添加口罩

Original: ython ] PyQt5 PySide2 笔记Author: PythonTitle: YEUNGCHIE

Python 2022年9月3日
072
• #### 【Java全栈学习路线】最全的Java学习路线及知识清单，Java自学方向指引

前言 自学Java怎么学，找对方向很关键！在这里为大家分享最全的架构师级 Java&#x5168;&#x6808;&#x5B66;&#x4E60;&…

Python 2023年2月5日
018
• #### Linux网络命令

Dubbo 是一款Java RPC框架，致力于提供高性能的 RPC 远程服务调用方案。作为主流的微服务框架之一， Dubbo 为开发人员带来了非常多的便利。 大家好，我是 mike…

Python 2023年1月30日
016