主页 > 知识库 > 基于PyTorch中view的用法说明

基于PyTorch中view的用法说明

热门标签:正安县地图标注app 地图地图标注有叹号 400电话申请资格 螳螂科技外呼系统怎么用 qt百度地图标注 举办过冬奥会的城市地图标注 阿里电话机器人对话 电销机器人系统厂家郑州 辽宁智能外呼系统需要多少钱

相当于numpy中resize()的功能,但是用法可能不太一样。

我的理解是:

把原先tensor中的数据按照行优先的顺序排成一个一维的数据(这里应该是因为要求地址是连续存储的),然后按照参数组合成其他维度的tensor。

比如说是不管你原先的数据是[[[1,2,3],[4,5,6]]]还是[1,2,3,4,5,6],因为它们排成一维向量都是6个元素,所以只要view后面的参数一致,得到的结果都是一样的。

比如,

a=torch.Tensor([[[1,2,3],[4,5,6]]])
b=torch.Tensor([1,2,3,4,5,6])
print(a.view(1,6))
print(b.view(1,6))

得到的结果都是

tensor([[1., 2., 3., 4., 5., 6.]]) 

再看一个例子:

a=torch.Tensor([[[1,2,3],[4,5,6]]])
print(a.view(3,2))

将会得到:

tensor([[1., 2.],
    [3., 4.],
    [5., 6.]])

相当于就是从1,2,3,4,5,6顺序的拿数组来填充需要的形状。但是如果您想得到如下的结果:

tensor([[1., 4.],
    [2., 5.],
    [3., 6.]])

就需要使用另一个函数了:permute()。用法参见我的另一篇博客:PyTorch中permute的用法

另外,参数不可为空。参数中的-1就代表这个位置由其他位置的数字来推断,只要在不致歧义的情况的下,view参数就可以推断出来,也就是人可以推断出形状的情况下,view函数也可以推断出来。

比如a tensor的数据个数是6个,如果view(1,-1),我们就可以根据tensor的元素个数推断出-1代表6。

而如果是view(-1,-1,2),人不知道怎么推断,机器也不知道。

还有一种情况是人可以推断出来,但是机器推断不出来的:view(-1,-1,6),人可以知道-1都代表1,但是机器不允许同时有两个负1。

如果没有-1,那么所有参数的乘积就要和tensor中元素的总个数一致了,否则就会出现错误。

补充:pytorch中x.view()和permute用法

pytorch中x.view()用法

在pytorch中经常会看到x.view(),它表示将Tensor的维度转变为view指定的维度,有点类似于resize函数

b=torch.Tensor([[[[1,2,3],[4,5,6],[7,8,9]],[[1,2,3],[4,5,6],[7,8,9]]]])
print(b.size())
(1, 2, 3, 3)
print(b.view(b.size(0),-1))
tensor([[1., 2., 3., 4., 5., 6., 7., 8., 9., 1., 2., 3., 4., 5., 6., 7., 8., 9.]])
print(b.view(b.size(0),-1).size())
(1, 18)

b.size(0)表示b中0维度==1,-1是按照原数据自动分配的列数。

a=torch.Tensor([[[1,2,3],[4,5,6]]])
print(a.size())
(1, 2, 3)
print(a.view(6,-1))
tensor([[1.],
[2.],
[3.],
[4.],
[5.],
[6.]])
print(a.view(6,-1).size())
(6, 1)

将a转变成6行1列

print(a.view(-1,6).size())
(1, 6)

或者将a转变成1行6列

在程序里还经常见到view函数后面跟着permute()函数,这个函数是做维度换位的

print(a.view(-1,6).permute(1,0))
tensor([[1.],
[2.],
[3.],
[4.],
[5.],
[6.]])
print(a.view(-1,6).permute(1,0).size())
(6, 1)

加了permute,a就由(1,6)变成(6,1)了。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

您可能感兴趣的文章:
  • Pytorch之view及view_as使用详解
  • pytorch中torch.max和Tensor.view函数用法详解
  • 对pytorch中x = x.view(x.size(0), -1) 的理解说明

标签:随州 信阳 合肥 兴安盟 淘宝好评回访 济源 阜新 昭通

巨人网络通讯声明:本文标题《基于PyTorch中view的用法说明》,本文关键词  基于,PyTorch,中,view,的,用法,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《基于PyTorch中view的用法说明》相关的同类信息!
  • 本页收集关于基于PyTorch中view的用法说明的相关信息资讯供网民参考!
  • 推荐文章