深度学习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]]])

持续更新中...

相关推荐
3DVisionary3 分钟前
3D-DIC与机器学习协同模拟材料应力-应变本构行为研究
人工智能·机器学习·3d·3d-dic技术 机器学习·应力-应变本构行为·卷积神经网络(ecnn)·数字图像相关法(dic)
神经星星5 分钟前
无需预对齐即可消除批次效应,东京大学团队开发深度学习框架STAIG,揭示肿瘤微环境中的详细基因信息
人工智能·深度学习·机器学习
神经星星6 分钟前
【vLLM 学习】调试技巧
人工智能·机器学习·编程语言
程序员Linc24 分钟前
写给新人的深度学习扫盲贴:向量与矩阵
人工智能·深度学习·矩阵·向量
xcLeigh32 分钟前
OpenCV从零开始:30天掌握图像处理基础
图像处理·人工智能·python·opencv
果冻人工智能35 分钟前
如何有效应对 RAG 中的复杂查询?
人工智能
2305_7978820944 分钟前
AI识图小程序的功能框架设计
人工智能·微信小程序·小程序
果冻人工智能1 小时前
向量搜索中常见的8个错误(以及如何避免它们)
人工智能
碳基学AI1 小时前
哈尔滨工业大学DeepSeek公开课:探索大模型原理、技术与应用从GPT到DeepSeek|附视频与讲义免费下载方法
大数据·人工智能·python·gpt·算法·语言模型·集成学习
补三补四1 小时前
机器学习-聚类分析算法
人工智能·深度学习·算法·机器学习