深度学习Pytorch常用api详解记录

深度学习常用的torch函数

torch.cat()

对象:给定的序列化张量,即Tensor型。
功能:实现两个张量在指定维度上的拼接。
输出:拼接后的张量。
函数以及参数torch.cat(tensor , dim) ,官方给出的有四个参数,但是我们平时只会用到前两个参数即可。
tensor:有相同形状的张量序列,所有的张量需要有相同的形状才能够拼接,除非是在拼接维度上两个张量可以有不同的尺寸,或者两个张量都是空的。
dim:两个张量或者多个张量拼接的维度。

应用实例1:两个张量形状相同

代码

python 复制代码
import torch

x = torch.randn(2,4)
y = torch.randn(2,4)

print(f'x={x}','\n',f'y={y}')
print(f'z={torch.cat((x,y), 0)}')

输出:

python 复制代码
x=tensor([[-1.2870, -0.7040,  0.3016, -0.2970],
        [-0.8151, -0.5236, -1.7680,  0.7675]]) 
 y=tensor([[-1.4207, -0.2694,  0.2521, -0.7187],
        [ 0.8776, -0.0352, -0.5094,  0.0602]])
z=tensor([[-1.2870, -0.7040,  0.3016, -0.2970],
        [-0.8151, -0.5236, -1.7680,  0.7675],
        [-1.4207, -0.2694,  0.2521, -0.7187],
        [ 0.8776, -0.0352, -0.5094,  0.0602]])

应用实例2:多个张量形状相同

代码

python 复制代码
import torch

x = torch.randn(2,4)
y = torch.randn(2,4)

print(f'x={x}','\n',f'y={y}')
print(f'z={torch.cat((x,y,x,y), 0)}')

输出

python 复制代码
x=tensor([[ 0.4697, -0.4881, -2.0199, -0.8661],
        [ 0.4911, -0.1259,  1.1939,  0.7730]]) 
 y=tensor([[ 0.8633,  0.4438, -0.6975,  0.5440],
        [ 0.1554, -1.6358, -1.2234, -0.6597]])
z=tensor([[ 0.4697, -0.4881, -2.0199, -0.8661],
        [ 0.4911, -0.1259,  1.1939,  0.7730],
        [ 0.8633,  0.4438, -0.6975,  0.5440],
        [ 0.1554, -1.6358, -1.2234, -0.6597],
        [ 0.4697, -0.4881, -2.0199, -0.8661],
        [ 0.4911, -0.1259,  1.1939,  0.7730],
        [ 0.8633,  0.4438, -0.6975,  0.5440],
        [ 0.1554, -1.6358, -1.2234, -0.6597]])

应用实例3:两个张量形状不同,但只在拼接维度上

代码

python 复制代码
import torch

x = torch.randn(3,4)
y = torch.randn(2,4)

print(f'x={x}','\n',f'y={y}')
print(f'z={torch.cat((x,y), 0)}')


x_1 = torch.randn(2,3)
y_1 = torch.randn(2,4)

print(f'x_1=\n{x_1}','\n',f'y_1=\n{y_1}')
print(f'z_1=\n{torch.cat((x_1,y_1), 1)}')

输出

python 复制代码
x=tensor([[-0.1966, -0.9648,  1.2787, -1.4578],
        [-1.2216,  0.1663,  0.5380, -0.0376],
        [-1.7365, -0.4151, -1.0336, -0.6732]]) 
 y=tensor([[ 1.4477,  0.3616, -0.1504,  0.4662],
        [-1.1334,  1.3100,  0.1624,  0.8206]])
z=tensor([[-0.1966, -0.9648,  1.2787, -1.4578],
        [-1.2216,  0.1663,  0.5380, -0.0376],
        [-1.7365, -0.4151, -1.0336, -0.6732],
        [ 1.4477,  0.3616, -0.1504,  0.4662],
        [-1.1334,  1.3100,  0.1624,  0.8206]])
x_1=
tensor([[ 1.1418,  0.0774,  0.2047],
        [-0.0673, -1.5794,  0.0131]]) 
 y_1=
tensor([[ 1.4149, -1.9538,  0.1660,  1.1142],
        [-1.6455,  0.5595, -0.1162,  0.8628]])
z_1=
tensor([[ 1.1418,  0.0774,  0.2047,  1.4149, -1.9538,  0.1660,  1.1142],
        [-0.0673, -1.5794,  0.0131, -1.6455,  0.5595, -0.1162,  0.8628]])

Process finished with exit code 0

torch.Tensor.repeat():

对象:给定的张量,即Tensor型。
功能:在指定的维度上对张量进行重复扩充,也可以用来增加维度。
输出:升维或扩充后的张量。
函数以及参数torch.tensor.repeat(size) ,size所在的索引表示扩充的维度的索引。
size:表示张量在这个索引维度下的扩充倍数。
注意事项:函数的参数量必须大于等于tensor的维度,如a.shape=(2,3),那么如果我们想扩充2倍a的第0个维度时,应该这么写a.repeat(2,1),对于不扩充的维度则写1。

应用实例1:一维张量扩充

代码

python 复制代码
import torch

x = torch.randn(3)

print(f'x={x}')

print(f'x_1={x.repeat(2)}')

输出

python 复制代码
x=tensor([-0.1485,  1.8445,  1.4257])
x_1=tensor([-0.1485,  1.8445,  1.4257, -0.1485,  1.8445,  1.4257])

应用实例2:多维张量扩充

代码

python 复制代码
import torch

x = torch.randn(3, 4, 3)

print(f'x={x}')
#在第2个维度上扩充两倍,其他维度保持不变
print(f'x_1={x.repeat(1,1,2)}')

输出

python 复制代码
x=tensor([[[-0.0294,  1.2902,  0.9825],
         [-0.3032,  1.6733,  0.9163],
         [ 0.3079, -0.0159,  0.2626],
         [-0.2934, -0.6076,  0.1593]],

        [[ 1.7661, -1.0698,  0.4074],
         [-0.3660, -0.3219,  0.3732],
         [-1.3314, -0.8263, -1.0793],
         [ 1.2589,  0.1886,  0.5453]],

        [[ 0.2520, -0.5695, -0.6685],
         [ 0.5554,  0.0119, -0.5650],
         [ 0.9733, -0.3812,  0.1963],
         [-1.1284,  0.2561,  0.4507]]])
x_1=tensor([[[-0.0294,  1.2902,  0.9825, -0.0294,  1.2902,  0.9825],
         [-0.3032,  1.6733,  0.9163, -0.3032,  1.6733,  0.9163],
         [ 0.3079, -0.0159,  0.2626,  0.3079, -0.0159,  0.2626],
         [-0.2934, -0.6076,  0.1593, -0.2934, -0.6076,  0.1593]],

        [[ 1.7661, -1.0698,  0.4074,  1.7661, -1.0698,  0.4074],
         [-0.3660, -0.3219,  0.3732, -0.3660, -0.3219,  0.3732],
         [-1.3314, -0.8263, -1.0793, -1.3314, -0.8263, -1.0793],
         [ 1.2589,  0.1886,  0.5453,  1.2589,  0.1886,  0.5453]],

        [[ 0.2520, -0.5695, -0.6685,  0.2520, -0.5695, -0.6685],
         [ 0.5554,  0.0119, -0.5650,  0.5554,  0.0119, -0.5650],
         [ 0.9733, -0.3812,  0.1963,  0.9733, -0.3812,  0.1963],
         [-1.1284,  0.2561,  0.4507, -1.1284,  0.2561,  0.4507]]])

应用实例3:张量维度扩充

代码

python 复制代码
import torch

x = torch.randn(1,2)

print(f'x={x}')
#将a多扩充一个维度,这个维度扩充的倍数需要写在最前面,如此案例的3
print(f'x_1={x.repeat(3,1,1)}')

输出

python 复制代码
x=tensor([[-0.2581, -0.8387]])
x_1=tensor([[[-0.2581, -0.8387]],

        [[-0.2581, -0.8387]],

        [[-0.2581, -0.8387]]])

持续更新中...

相关推荐
泰迪智能科技012 小时前
高校深度学习视觉应用平台产品介绍
人工智能·深度学习
盛派网络小助手2 小时前
微信 SDK 更新 Sample,NCF 文档和模板更新,更多更新日志,欢迎解锁
开发语言·人工智能·后端·架构·c#
Eric.Lee20213 小时前
Paddle OCR 中英文检测识别 - python 实现
人工智能·opencv·计算机视觉·ocr检测
cd_farsight3 小时前
nlp初学者怎么入门?需要学习哪些?
人工智能·自然语言处理
AI明说3 小时前
评估大语言模型在药物基因组学问答任务中的表现:PGxQA
人工智能·语言模型·自然语言处理·数智药师·数智药学
Focus_Liu3 小时前
NLP-UIE(Universal Information Extraction)
人工智能·自然语言处理
PowerBI学谦3 小时前
使用copilot轻松将电子邮件转为高效会议
人工智能·copilot
audyxiao0013 小时前
AI一周重要会议和活动概览
人工智能·计算机视觉·数据挖掘·多模态
Jeremy_lf4 小时前
【生成模型之三】ControlNet & Latent Diffusion Models论文详解
人工智能·深度学习·stable diffusion·aigc·扩散模型