相当于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中元素的总个数一致了,否则就会出现错误。
---------------------
作者:York1996
来源:CSDN
原文:https://blog.csdn.net/york1996/article/details/81949843
版权声明:本文为博主原创文章,转载请附上博文链接!

最新文章

  1. paip.信用卡账单处理分类bug o21
  2. addView的误区
  3. python:UnicodeEncodeError
  4. C# 实现关闭按钮隐藏窗体而不退出
  5. 洛谷 P1515 旅行
  6. python socket学习
  7. C语言随笔_类型声明
  8. Java学习02
  9. 移动端Bug管理工具——Bugtags
  10. Jquery实现弹出层效果
  11. Android热修复技术原理详解(最新最全版本)
  12. V5.7_UTF8_SP1、SP2---任意前台用户登录(cookie伪造)
  13. 并发编程之CountDownLatch
  14. RN和IOS原生端交互
  15. Egg 中 Controller 最佳实践
  16. web.xml:<url-pattern>
  17. 查看Oracle数据库名和实例名的命令
  18. 2018.09.26洛谷P3957 跳房子(二分+单调队列优化dp)
  19. 【HNOI2017】单旋
  20. WeifenLuo.WinFormsUI.Docking"的使用

热门文章

  1. DOM 事件监听 事件冒泡 事件捕获
  2. git 报错:没有权限 remote: error: unable to unlink old 'README.md' (Permission denied)
  3. DIV+CSS网页布局常用的一些基础知识整理
  4. python学习笔记10--协程、IO、IO多路复用
  5. PHP数据加密和解密
  6. 面试问题:Vuejs如何实现双向绑定
  7. 项目管理知识图谱OR架构图
  8. 【水滴石穿】React Native 组件之SafeAreaView
  9. 移动项目到centos中运行报错:failed to open stream: Permission denied
  10. @Transactional注解事务