view和reshape

在PyTorch0.3版本中使用view,在PyTorch0.4以后增加了reshape,作用是将一个shape转变为另一个shape。

shape变化的前提是保证numel()一致

a = torch.rand(4,1,28,28) # 4张图片,灰度,28长,28宽
# torch.Size([4, 1, 28, 28])
a.view(4, 1*28*28)
a.view(4, 1*28*28).shape # torch.Size([4, 784]) # 这里丢失了原始的数据存储顺序

unsqueeze和Squeeze

添加维度unsqueeze

a = torch.rand(4,1,28,28)
a.unsqueeze(0).shape # 在最前面添加了一个维度,例如数据组
# torch.Size([1, 4, 1, 28, 28])
a.unsqueeze(-1).shape # 在最后面添加了一个维度,例如方差
# torch.Size([4, 1, 28, 28, 1])

unsqueeze不会更改数据本身,只是插入一个维度。
举例f+bf+bf+b求偏置项

b = torch.rand(32)
f=torch.rand(4,32,14,14)
b = b.unsqueeze(1).unsqueeze(2).unsqueeze(0)
b.shape # torch.Size([1, 32, 1, 1])

删减维度

b.shape # torch.Size([1, 32, 1, 1])
b.squeeze().shape # torch.Size([32]) 把所有的1维度数据删除
b.squeeze(0).shape # torch.Size([32, 1, 1]) 删除了第一个维度
b.squeeze(-1).shape # torch.Size([1, 32, 1]) 删除了最后一个维度
b.squeeze(1).shape # torch.Size([1, 32, 1, 1]) 删除了第一个维度,但是这个维度中包含了数据,所以不变化
b.squeeze(-4).shape # torch.Size([32, 1, 1]) 从右往左删除第四个维度

维度扩展expand和repeat

b.shape # torch.Size([1, 32, 1, 1])
b.expand(4,32,14,14).shape # torch.Size([4, 32, 14, 14]) 将原先维度是1的进行扩展
b.expand(-1,32,14,14).shape # torch.Size([1, 32, 14, 14]) 如果不想改变某个维度,只需要写为-1就可以# 对于repeat表示在某个维度上的重复倍数
b.repeat(4,32,1,1).shape # torch.Size([4, 1024, 1, 1]) 对应维度分别扩展4倍、32倍、不扩展、不扩展
b.repeat(4,1,1,1).shape # torch.Size([4, 32, 1, 1]) 对应维度分别扩展4倍、不扩展、不扩展、不扩展

转置

a = torch.randn(3,4)
a.t()
#tensor([[ 0.3362,  0.3310, -0.9111],
#        [-0.9452, -0.3859, -0.2837],
#        [-2.0296,  0.7222, -1.2428],
#        [-1.0731,  1.2659,  1.5356]])

转置只能适用于矩阵,也就是dim=2

PyTorch教程(四):维度变换相关推荐

  1. 深度学习(8)TensorFlow基础操作四: 维度变换

    深度学习(8)TensorFlow基础操作四: 维度变换 1. View 2. 示例 3. Reshape操作可能会导致潜在的bug 4. tf.transpose 5. Squeeze VS Exp ...

  2. pytorch reshape_pytorch常用总结 之 tensor维度变换

    小白最近刚开始使用pytorch,经常需要在各个网站反复查询一些函数的区别.但是不同的博客说的有时候不一样,趁着实验室停电,小白写了这篇文章,方便自己食用,不定期更新.如有错误,欢迎大家热烈指正. 第 ...

  3. pytorch教程 聊天机器人(详细注释attentionrnn输入输出shape等知识点...

    最近可能要用到seq2seq模型去解决一些轨迹预测的问题,拿pytorch教程的聊天机器人练了练手. 原文中教程已经写的比较详尽了,在此对原文教程进行一些补充说明,可能更加方便向我这样的小白入门学习. ...

  4. 【TensorFlow2.0】(4) 维度变换、广播

    各位同学好,今天我和大家分享一下TensorFlow2.0中有关数学计算的相关操作,主要内容有: (1) 改变维度:reshape():(2) 维度转置:transpose():(3) 增加维度:ex ...

  5. 新视角来了:《用户体验四维度》

    以下内容节选自产品设计师李潇 Leeo的新书<用户体验四维度>. 本书强调根需求.功能架构.信息架构的建立与优化,提供了一个解读.打造用户体验的新视角.内容通俗,结构严密,话题丰富,有一定 ...

  6. 【深度学习】翻译:60分钟入门PyTorch(四)——训练一个分类器

    前言 原文翻译自:Deep Learning with PyTorch: A 60 Minute Blitz 翻译:林不清(https://www.zhihu.com/people/lu-guo-92 ...

  7. 【深度学习】Github上标星1.1W的PyTorch教程,我们给您搬来了

    之前给大家推过TensorFlow的入门教程,大家纷纷表示"搞研究用PyTorch它不香嘛?" 行,那说干就干.我们马上去Github上,给大家搬来了一本开源的PyTorch教程& ...

  8. pytorch教程龙曲良11-15

    11创建tensor02 randn一般是均值为0,方差为1的正态分布N(0,1),也可以自定义N(u,std)用torch.normal torch.normal(mean=torch.full([ ...

  9. Directx11教程四十六之FBX SDK

    在之前的DX11入门系列文章中,有篇有关 Directx11教程四十之加载OBJ模型 读取obj模型数据的博客.不过在obj读取的那篇博客我有些坑并没有说,就是我写的那个obj解析器只能解析特定的ob ...

  10. 雷达革命,截止日期以及到达第四维度

    在我们之前发布的文章中都提到了雷达.它广泛用于汽车行业,用来实现标准的主动和被动安全功能.在高级自动化控制系统(包括无人驾驶汽车)的解决方案中需要更加灵活,更先进的技术.Cognitive Pilot ...

最新文章

  1. jsonp请求url长度过长的替代(ajaxcdr的使用)
  2. windows下GitHub的SSH Key 配置
  3. python删除链表中的最小元素_LintCode Python 入门级题目 删除链表元素、整数列表排序...
  4. leetcode —— 48. 旋转图像
  5. 云计算的思想领袖:与Tier3的创始人和首席技术官Jared Wray的谈话
  6. Applying Multicycle Exceptions in the TimeQuest Timing Analyzer--Altera Note
  7. 8月23日亮相?三星Galaxy Note10+ 5G版渲染图曝光
  8. js 高级 call()
  9. Normalizing Flows Tutorial(标准化流教程)第一部分
  10. 关于360笔试部分题目小结
  11. 低通滤波器计算截止评率_了解奈奎斯特图中的截止频率
  12. python模拟登录京东网页
  13. 桥接模式、NAT模式和仅主机模式
  14. 云上游戏数据分析实践
  15. C#-----集合ListT的常用方法
  16. R语言之长宽数据转换
  17. 调用高德API实现数据可视化
  18. Poison Frogs! Targeted Clean-Label Poisoning Attacks on Neural Networks 论文阅读、复现及思考
  19. vi命令下编辑文件时,按insert键文件底部无法编辑
  20. 服务器租用价格与哪些因素有关?

热门文章

  1. postman发送json格式的post请求(亲测)
  2. Apache与Nginx比较(Nginx 高并发情况常用,必须学习)
  3. WeChat区别this.setData()与this.setData({})
  4. Bug关于TP5.1与Swoole使用
  5. linux下安装oracle集群,【Oracle 集群】Linux下Oracle RAC集群搭建之Oracle DataBase安装(八)...
  6. java如何把string转化E_java将string转为代码执行
  7. 用友老是显示服务器错误,客户端连服务器出现这样的错误框
  8. 吉林高考成绩查询2021年几号公布,2021年吉林高考成绩查询时间及查分方式
  9. PHP一个比较完善的树形结构代码
  10. myeclipse hbm2java_myeclipse试用小记----Hibernate多对一双向关联(2)