pytorch 中的常用矩阵操作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pytorch 中的常用矩阵操作相关的知识,希望对你有一定的参考价值。

参考技术A PyTorch 常用方法总结4:张量维度操作(拼接、维度扩展、压缩、转置、重复……) - TH_NUM的博客 - CSDN博客

pytorch中与维度/变换相关的几个函数 - MaloFleur - CSDN博客

Numpy与Pytorch 矩阵操作 - 坩埚上校的博客 - CSDN博客

Pytorch对Tensor的各种“特别”操作 - LightningCode的博客 - CSDN博客

Pytorch中的矩阵操作:

    随机矩阵: torch.randn(d0, d1, d2, ...)

    添加维度: tensor.unsqueeze(0)

    压缩维度: tensor.squeeze(0)

    按维度拼接tensor: torch.cat(inputs, dim=0, ...)

    维度堆叠: torch.stack(inputs, dim=0)

    张量排序索引: tensor.sort(descending=True) 返回一个tensor为排序后的tensor, 一个为index_tensor

    把原始tensor在某个维度上根据输入的排序:torch.permute()

    矩阵元素夹逼: tensor.clamp()

    矩阵切割: torch.chunk(tensor, chunks, dim)

    矩阵复制: torch.repeat(*size)

    生成零矩阵: torch.torch.zeros(5, 3, dtype=torch.long)

    生产同形状的随机矩阵:x = torch.randn_like(x, dtype=torch.float)

    矩阵扩张:torch.expand()  , torch.expand_as(matrix)

    矩阵转置:x.transpose(dim0= ,dim1= )

    矩阵中函数名以’_’结尾的,如:y.add_(x),运算结束后会改变y本身

Pytorch对Tensor的各种“特别”操作:

小技巧:可以用:id()和 tensor.device 查看变量的id和位于cpu上还是gpu上。

Pytorch中的tensor常用操作

参考技术A

在指定的维度dim上对序列seq进行连接操作。

参数:

例子:

torch.Tensor.expand( sizes)* → Tensor

返回张量的一个新视图,可以将张量的单个维度扩大为更大的尺寸。

张量也可以扩大为更高维,新增加的维度将附在前面。 扩大张量不需要分配新内存,仅仅是新建一个张量的视图。任意一个一维张量在不分配新内存情况下都可以扩展为任意的维度。

传入-1则意味着维度扩大不涉及这个维度。

参数:

例子:

torch.squeeze(input, dim=None, out=None) → Tensor

除去输入张量input中数值为1的维度,并返回新的张量。如果输入张量的形状为( [图片上传失败...(image-786ec5-1580566115084)]

),那么输出张量的形状为( [图片上传失败...(image-a0a179-1580566115084)]

)。

当通过dim参数指定维度时,维度压缩操作只会在指定的维度上进行。如果输入向量的形状为( [图片上传失败...(image-1088a1-1580566115084)]

),squeeze(input, 0)会保持张量的维度不变,只有在执行squeeze(input, 1)时,输入张量的形状会被压缩至( [图片上传失败...(image-759892-1580566115084)]

)。

如果一个张量只有1个维度,那么它不会受到上述方法的影响。

输出的张量与原张量共享内存,如果改变其中的一个,另一个也会改变。

参数:

例子:

torch.Tensor.repeat( sizes)*

沿着指定的维度重复张量。不同于expand()方法,本函数复制的是张量中的数据。

参数:

例子:

torch.Tensor.unfold(dim, size, step) → Tensor

返回一个新的张量,其中元素复制于有原张量在dim维度上的数据,复制重复size次,复制时的步进值为step。

参数:

例子:

torch.Tensor.narrow(dimension, start, length) → Tensor

返回一个经过缩小后的张量。操作的维度由dimension指定。缩小范围是从start开始到start+length。执行本方法的张量与返回的张量共享相同的底层内存。

参数:

例子:

torch.Tensor.view( args)* → Tensor

返回一个有相同数据但是不同形状的新的向量。

返回的装两必须与原张量有相同的数据和相同的元素个数,但是可以有不同的尺寸。

参数:

例子:

torch.Tensor.resize_( sizes)*

将张量的尺寸调整为指定的大小。如果元素个数比当前的内存大小大,就将底层存储大小调整为与新元素数目一致的大小。
如果元素个数比当前内存小,则底层存储不会被改变。原来张量中被保存下来的元素将保持不变,但新内存将不会被初始化。

参数:

例子:

torch.Tensor.permute( dims)*

将执行本方法的张量的维度换位。

参数:

例子:

torch.Tensor.element_size() → int

查看某类型张量单个元素的字节数。

例子:

以上是关于pytorch 中的常用矩阵操作的主要内容,如果未能解决你的问题,请参考以下文章

Pytorch中的tensor常用操作

pytorch 常用函数参数详解

Pytorch基本操作

pytorch :使用两次sort函数(排序)找出矩阵每个元素在升序或降序排列中的位置

pytorch :使用两次sort函数(排序)找出矩阵每个元素在升序或降序排列中的位置

具有固定项矩阵的 PyTorch 矩阵分解