美文网首页pytorch
PyTorch1.0中view的用法

PyTorch1.0中view的用法

作者: top_小酱油 | 来源:发表于2019-04-08 16:15 被阅读0次

相当于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的用法 (https://www.jianshu.com/p/0af6e5ad3476)

另外,参数不可为空。参数中的-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中元素的总个数一致了,否则就会出现错误。

相关文章

  • PyTorch1.0中view的用法

    相当于numpy中resize()的功能,但是用法可能不太一样。 我的理解是:把原先tensor中的数据按照行优先...

  • PyTorch1.0中view的用法

    我的理解是:把原先tensor中的数据按照行优先的顺序排成一个一维的数据(这里应该是因为要求地址是连续存储的),然...

  • PyTorch1.0中permute的用法

    permute(dims)将tensor的维度换位。参数:参数是一系列的整数,代表原来张量的维度。比如三维就有0,...

  • layoutSubviews

    在VC里 在view中 用法: 1)在view用法 在init中写好属性,在layoutSubviews布局,因为...

  • PyTorch1.0中的torch.cat的用法

    字面理解:torch.cat是将两个张量(tensor)拼接在一起,cat是concatnate的意思,即拼接,联...

  • PyTorch中的view的用法

    在PyTorch中view函数作用为重构张量的维度,相当于numpy中的resize()的功能,但是用法不太一样 ...

  • Android View.setId(int id) 用法

    Android View.setId(int id) 用法 当要在代码中动态的添加View并且为其设置id时,如果...

  • Id

    Android View.setId(int id) 的用法 当要在代码中动态的添加View并且为其设置id时,如...

  • AutoEncoder自编码器

    使用Pytorch1.0,GPU版本

  • 深度学习框架简介

    一、一些框架 pytorch1.0前版本:THNN后端pytorch1.0后版本:CAFFE2后端 二、pytor...

网友评论

    本文标题:PyTorch1.0中view的用法

    本文链接:https://www.haomeiwen.com/subject/ejkpiqtx.html