Pytorch常用函数

Pytorch

    • 1 一些操作含义
    • 2 常用函数
      • torch.squeeze
      • torch.unsqueeze
      • torch.transpose
      • 随机数生成
      • Tensor详细内容

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的相关概念及操作

你可能感兴趣的:(pytorch,人工智能,python)