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 :使用两次sort函数(排序)找出矩阵每个元素在升序或降序排列中的位置