PyTorch教程(四):维度变换
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教程(四):维度变换相关推荐
- 深度学习(8)TensorFlow基础操作四: 维度变换
深度学习(8)TensorFlow基础操作四: 维度变换 1. View 2. 示例 3. Reshape操作可能会导致潜在的bug 4. tf.transpose 5. Squeeze VS Exp ...
- pytorch reshape_pytorch常用总结 之 tensor维度变换
小白最近刚开始使用pytorch,经常需要在各个网站反复查询一些函数的区别.但是不同的博客说的有时候不一样,趁着实验室停电,小白写了这篇文章,方便自己食用,不定期更新.如有错误,欢迎大家热烈指正. 第 ...
- pytorch教程 聊天机器人(详细注释attentionrnn输入输出shape等知识点...
最近可能要用到seq2seq模型去解决一些轨迹预测的问题,拿pytorch教程的聊天机器人练了练手. 原文中教程已经写的比较详尽了,在此对原文教程进行一些补充说明,可能更加方便向我这样的小白入门学习. ...
- 【TensorFlow2.0】(4) 维度变换、广播
各位同学好,今天我和大家分享一下TensorFlow2.0中有关数学计算的相关操作,主要内容有: (1) 改变维度:reshape():(2) 维度转置:transpose():(3) 增加维度:ex ...
- 新视角来了:《用户体验四维度》
以下内容节选自产品设计师李潇 Leeo的新书<用户体验四维度>. 本书强调根需求.功能架构.信息架构的建立与优化,提供了一个解读.打造用户体验的新视角.内容通俗,结构严密,话题丰富,有一定 ...
- 【深度学习】翻译:60分钟入门PyTorch(四)——训练一个分类器
前言 原文翻译自:Deep Learning with PyTorch: A 60 Minute Blitz 翻译:林不清(https://www.zhihu.com/people/lu-guo-92 ...
- 【深度学习】Github上标星1.1W的PyTorch教程,我们给您搬来了
之前给大家推过TensorFlow的入门教程,大家纷纷表示"搞研究用PyTorch它不香嘛?" 行,那说干就干.我们马上去Github上,给大家搬来了一本开源的PyTorch教程& ...
- pytorch教程龙曲良11-15
11创建tensor02 randn一般是均值为0,方差为1的正态分布N(0,1),也可以自定义N(u,std)用torch.normal torch.normal(mean=torch.full([ ...
- Directx11教程四十六之FBX SDK
在之前的DX11入门系列文章中,有篇有关 Directx11教程四十之加载OBJ模型 读取obj模型数据的博客.不过在obj读取的那篇博客我有些坑并没有说,就是我写的那个obj解析器只能解析特定的ob ...
- 雷达革命,截止日期以及到达第四维度
在我们之前发布的文章中都提到了雷达.它广泛用于汽车行业,用来实现标准的主动和被动安全功能.在高级自动化控制系统(包括无人驾驶汽车)的解决方案中需要更加灵活,更先进的技术.Cognitive Pilot ...
最新文章
- jsonp请求url长度过长的替代(ajaxcdr的使用)
- windows下GitHub的SSH Key 配置
- python删除链表中的最小元素_LintCode Python 入门级题目 删除链表元素、整数列表排序...
- leetcode —— 48. 旋转图像
- 云计算的思想领袖:与Tier3的创始人和首席技术官Jared Wray的谈话
- Applying Multicycle Exceptions in the TimeQuest Timing Analyzer--Altera Note
- 8月23日亮相?三星Galaxy Note10+ 5G版渲染图曝光
- js 高级 call()
- Normalizing Flows Tutorial(标准化流教程)第一部分
- 关于360笔试部分题目小结
- 低通滤波器计算截止评率_了解奈奎斯特图中的截止频率
- python模拟登录京东网页
- 桥接模式、NAT模式和仅主机模式
- 云上游戏数据分析实践
- C#-----集合ListT的常用方法
- R语言之长宽数据转换
- 调用高德API实现数据可视化
- Poison Frogs! Targeted Clean-Label Poisoning Attacks on Neural Networks 论文阅读、复现及思考
- vi命令下编辑文件时,按insert键文件底部无法编辑
- 服务器租用价格与哪些因素有关?
热门文章
- postman发送json格式的post请求(亲测)
- Apache与Nginx比较(Nginx 高并发情况常用,必须学习)
- WeChat区别this.setData()与this.setData({})
- Bug关于TP5.1与Swoole使用
- linux下安装oracle集群,【Oracle 集群】Linux下Oracle RAC集群搭建之Oracle DataBase安装(八)...
- java如何把string转化E_java将string转为代码执行
- 用友老是显示服务器错误,客户端连服务器出现这样的错误框
- 吉林高考成绩查询2021年几号公布,2021年吉林高考成绩查询时间及查分方式
- PHP一个比较完善的树形结构代码
- myeclipse hbm2java_myeclipse试用小记----Hibernate多对一双向关联(2)