Pytorch常用函数

1 一些操作含义

  1. 下划线后缀含义:
    在touch中函数后面加下划线代表是原位(In-place)操作,也就是内存的位置不变化,比如torch.add(value)和torch.add_(value)
    备注:In-place运算是一种直接改变给定线性函数、向量、矩阵(张量)内容而不复制的运算,因此在操作高维数据时,它能够减少内存使用
  2. like后缀含义:
    在touch中函数后缀有like代表生成的形状维度与输入矩阵的形状维度一致

2 常用函数

torch.squeeze

  1. torch.squeeze(input, dim=None, out=None)
    将输入张量形状中的1 去除并返回。 如果输入是形如(A×1×B×1×C×1×D)
    ,那么输出形状就为: (A×B×C×D)
    当给定dim时,那么挤压操作只在给定维度上。例如,输入形状为: (A×1×B)
    , squeeze(input, 0) 将会保持张量不变,只有用 squeeze(input, 1),形状会变成 (A×B)
  2. 如果dim为负,则将会被转化dim+input.dim()+1,(可以记为从后往前数维度)。dim的维度范围([-input.dim() - 1, input.dim() + 1)
  3. 参数:

tensor (Tensor) – 输入张量

dim (int) – 插入维度的索引

out (Tensor, optional) – 结果张量

具体代码示例

‘’’

import torch
x = torch.zeros(2,1,2,1,2)
x.size()
torch.Size([2, 1, 2, 1, 2])
y=torch.squeeze(x)
y.shape
torch.Size([2, 2, 2])
y=torch.squeeze(x,0)
y.shape
torch.Size([2, 1, 2, 1, 2])
y=torch.squeeze(x,1)
y.size()
torch.Size([2, 2, 1, 2])
y=torch.squeeze(x,-4)
y.shape
torch.Size([2, 2, 1, 2])

‘’’

torch.unsqueeze

torch.unsqueeze(input, dim, out=None),squeeze的逆操作,返回一个新的张量,对输入的指定位置插入维度 1。

具体代码示例

‘’’

x = torch.tensor([1, 2, 3, 4])
x
tensor([1, 2, 3, 4])
torch.unsqueeze(x, 0)
tensor([[1, 2, 3, 4]])
torch.unsqueeze(x, 1)
tensor([[1],
[2],
[3],
[4]])
‘’’

torch.transpose

torch.transpose(input, dim0, dim1, out=None) → Tensor,返回输入矩阵input的转置。交换维度dim0和dim1。

如果输入是一个跨步张量,则结果张量与输入张量共享其底层存储,因此更改其中一个的内容将更改另一个的内容。
如果输入是一个稀疏张量,则结果张量不与输入张量共享底层存储。

参数:
input (Tensor) – 输入张量
dim0 (int) – 转置的第一维
dim1 (int) – 转置的第二维

‘’’

x=torch.randn(2,3,4)
x
tensor([[[-2.2487, -0.5821, 1.1262, 0.7496],
[ 0.8734, 1.6248, -0.5010, 0.7022],
[ 0.4190, 1.6377, -0.1449, 1.1198]],

    [[ 0.2262, -0.8953, -2.3222,  1.6512],
     [ 0.7219, -0.1876,  0.6869, -0.3515],
     [-1.2393,  0.7014, -0.3381, -0.7055]]])

torch.transpose(x,0,1)
tensor([[[-2.2487, -0.5821, 1.1262, 0.7496],
[ 0.2262, -0.8953, -2.3222, 1.6512]],

    [[ 0.8734,  1.6248, -0.5010,  0.7022],
     [ 0.7219, -0.1876,  0.6869, -0.3515]],

    [[ 0.4190,  1.6377, -0.1449,  1.1198],
     [-1.2393,  0.7014, -0.3381, -0.7055]]])

‘’’

随机数生成

函数生成类型
normal离散正态分布中随机抽取浮点数
rand从区间[0,1)的均匀分布中抽取的随机抽取一组浮点数
randn从标准正态分布(均值为0,方差为 1)中随机抽取一组浮点数
randint半开区间[start, end),从start开始到end之间均匀生成的随机整数
randperm给定参数n,返回一个从0 到n -1 的随机整数
range区间[start, end],从start开始到end,以step为步长的一组值(不建议使用)
arange半开区间[start, end),从start开始到end,以step为步长的一组值,当start和end都为整数,输出整数值,有一个为浮点数,则输出浮点数

Tensor详细内容

查看Tensor的相关概念及操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CV温故知新

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值