Pytorch 操作整理

1. 创建张量

a = torch.tensor([1.5, 3.5])

创建张量

a = torch.normal(

mean=torch.tensor([[1.0, 2.0], [3.0, 4.0]]), std=torch.tensor([[0.1, 0.2], [0.3, 0.4]]))

生成服从正态分布的张量,std必须为tensor,二者形状均能决定生成张量的形状

mean与std的类型必须为浮点数

a = torch.rand(3, 4)

随机生成【0.1】上均匀分布的张量

a = torch.randn(3, 4)

随机生成维数为(3,4)的正态分布张量

-

b = torch.zeros_like(a)

生成与a形状,类型相同的张量

b = torch.ones_like(a)

b = torch.rand_like(a)

b = torch.randn_like(a)

a = torch.rand(3, 4)

与a形状类型相同 正态分布的张量

-

f = a.new_tensor(e)

f与e的值与形状相同,类型与a相同

f = a.new_full((3, 3), fill_value=1)

3*3全1填充,类型与a相同

f = a.new_zeros((3, 3))

f = a.new_ones((3, 3))

f = a.new_empty((3.3)) 

3*3空张量,类型与a相同

2. 张量相关操作

-数组,张量转化

a=torch.as_tensor(b)

a=torch.form_numpy(b)

从numpy转化为tensor

a=b.numpy()

从tensor转化为numpy

-

-查看张量信息

a.shape 

查看形状

a.size()

查看维度

a.numel() 

查看元素的总个数

a.dtype 

查看元素的类型

a.int()

a.long()

a.float()

a.double()

更改张量元素的类型

-

-基本操作

a.reshape(3,4)

改变形状

a.resize(3,4)

resize不仅可以改变形状 还可以改变数据

如原本有8个元素的张量,可以resize(2,3)

但不可以reshape(2,3)

a.resize_as(b)

把a resize成b的形状

a.unsqueeze()

博客

a.squeeze()

博客

a.expand_as(c)

博客

a.expand()

博客

a.repeat

将张量看作一个整体,根据指定的形状扩充

a.tril(diagonal=0/1)

保留张量的下三角部分,其余换成0

digonal=0则不保留对角线,否则保留

a.trilu(diagonal=0/1)

保留张量的上三角部分,其他替换成0

a.diag(diagonal=...)

提取张量对角线生成1维张量

diagonal=... 表示偏移量

torch.cat(a,b,dim=...)

拼接张量,dim表示拼接的维度

d1,d2...dn=torch.chunk(a,n,dim=...)

将张量的第...个维度,平均切分成n份

d1,d2...dn=torch.split(a,[m,n],dim=...)

将张量的第...个维度,分成指定的份数

第一份m个,第二份n个...

-

-判断元素相关关系

torch.allclose(a,b,rtol=...,atol=...)

比较两个元素是否接近

torch.eq()

逐元素比较是否相等

torch.equal()

判断两个张量是否具有相同的形状和元素

torch.ge()

逐元素比较大于等于

torch.gt()

逐元素比较大于

torch.le()

逐元素比较小于等于

torch.lt()

逐元素比较小于

torch.ne()

逐元素比较不等于

torch.isnan()

判断是否为缺失值

-

-张量运算

a+b a-b a*b a/b

逐个元素加减乘数

torch.pow(a,...)

逐个元素乘方

torch.sqrt()

逐个元素平方根

torch.rsqrt()

逐个元素平方根的倒数

torch.log()

逐个元素计算对数

torch.clamp_max(a,max)

保留大于等于max 的元素,其他替换为0

torch.clamp_min(a,min)

保留小于等于min的元素,其他替换为0

torch.clamp(a,min,max)

保留介于二者之间的元素,其他替换为0

troch.t(a)

张量转置

troch.matmul(a,b)

张量的矩阵乘法

torch.inverse(a)

张量取逆(逆矩阵)

torch.trace()

计算张量的迹(对角线元素和)

torch.max(a,dim=...)

dim为...中最大的元素

torch.min (a,dim=...)

最小的元素

torch.argmax(a,dim=...)

最大元素所在位置

torch.argmin (a,dim=...)

最小元素所在位置

torch.sort(a,dim=...,descending=T/F)

张量dim=...维度排序

value,indices=torch.topk(a,k)

提取张量中前k大的元素,输出值和索引

value,indices=torch.kthvalue(a,k)

提取张量中第k大的元素

torch.mean(a,dim=...,keepdim=Ture)

对某一个维度取平均值

torch.sum(a,dim=...,keepdim=Ture)

对张量中的某个维度取和

torch.median(a,dim=...,keepdim=Ture)

对张量中的某个维度提取中位数

torch.std(a,dim=...,keepdim=Ture)

计算张量某个维度的标准差

3. 张量相关操作

-卷积层操作

torch.nn.Conv1d()

针对输人信号上应用 1D 卷积

torch.nn.Conv2d()

针对输人信号上应用 2D 卷积

torch.nn.Conv3d()

针对输人信号上应用3D卷积

torch.nn.ConvTranspose1d()

在输人信号上应用1D转置卷积

torch.nn.ConvTranspose2d()

在输人信号上应用2D 转置卷积

torch.nn.ConvTranspose3d()

在输人信号上应用 3D转置卷积

-

-池化层操作

torch.nn.MaxPool1d()

针对输人信号上应用 1D最大值池化

torch.nn.MaxPool2d()

针对输人信号上应用 2D 最大值池化

torch.nn.MaxPool3d()

针对输人信号上应用 3D 最大值池化

torch.nn.MaxUnPool1d()

1D 最大值池化的部分逆运算

torch.nn.Max UnPool2d()

2D 最大值池化的部分逆运算

torch.nn.MaxUnPool3d()

3D 最大值池化的部分逆运算

torch.nn.AvgPool1d()

针对输人信号上应用 1D 平均值池化

torch.nn.AvgPool2d()

针对输人信号上应用2D 平均值池化

torch.nn.AvgPool3d()

针对输人信号上应用 3D平均值池化

torch.nn.AdaptiveMaxPool1d()

针对输人信号应用 1D 自适应最大值池化

torch.nn.AdaptiveMaxPool2d()

针对输人信号应用 2D 自适应最大值池化

torch.nn.AdaptiveMaxPool3d()

针对输入信号应用3D 自适应最大值池化

torch.nn.AdaptiveAvgPool1d()

针对输人信号应用 1D 自适应平均值池化

torch.nn.AdaptiveAvgPool2d()

针对输人信号应用 2D 自适应平均值池化

torch.nn.AdaptiveAvgPool3d()

针对输人信号应用 3D 自适应平均值池化

-

-激活函数

torch.nn.Sigmoid

Sigmoid 激活函数

torch.nn.Tanh

Tanh 激活函数

torch.nn.ReLU

ReLU 激活函数

torch.nn.Softplus

ReLU 激活函数的平滑近似

-

-全连接层

nn.Linear()

全连接层函数

用法示例: 

cov2d=torch.nn.Conv2d(

in_channels=(整数)输人图像的通道数。
out_channels=(整数)经过卷积运算后,输出;特征映射的数量。
kernel_size=(整数或者数组)卷积核的大小。
stride=(整数或者数组,正数)卷积的步长,默认为1。
padding=(整数或 者数组,正数)在输人两边进行0填充的数量,默认为0。
dilation=(整数或者数组,正数)卷积核元素之间的步幅,该参数可调整空洞卷
积的空洞大小,默认为1。
groups=(整数,正数)从输人通道到输出通道的阻塞连接数。
bias=(布尔值,正数)如果bias=True,则添加偏置,默认为True。

)

maxpool2d=torch.nn.MaxPool2d(

kerel_size=(整数或数组)最大值池化的窗口大小。
stride=(整数或数组,正数)最大值池化窗口移动的步长,默认值是kernel size。
padding=(整数或数组,正数)输人的每一条边补充0的层数。
dilation=(整数或数组,正数)一个控制窗口中元素步幅的参数。
return_indices=如果为True,则会返回输出最大值的索引,这样会更加便于之后的torch.nn.MaxUnpool2d操作。
ceil_mode=如果等于Trae,计算输出信号大小的时候,会使用向上取整,默认是向下取整。

)

linear=torch.nn.Linear(

in_features=每个输人样本的特征数量。
out_features=每个输出样本的特征数量。
bias=若设置为False,则该层不会学习偏置。默认值为True

)

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Dylan_zhang7788

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

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

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

打赏作者

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

抵扣说明:

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

余额充值