深度学习与PyTorch笔记7

Tensor维度变换

view/reshape

lost dim information
view和reshape用法完全相同,将数据合并,必须要有物理意义。适用于全连接层。缺点:不好还原数据。
在这里插入图片描述

squeeze/unsqueeze

squeeze:挤压、减少维度
在这里插入图片描述

unsqueeze:展开、增加维度,取值范围为[-a.dim()-1,a.dim()+1)
在这里插入图片描述
正数:在前面插入。负数:在后面插入。
在这里插入图片描述

在这里插入图片描述

expand/repeat

维度扩展,维度的shape改变
expand:broadcasting不会主动复制数据,推荐使用。前提:tensor原来的shape和要转变的shape要一致,只能从1到N,不能从大于1的维度开始。维度不变用-1。
在这里插入图片描述
repeat:memory copied主动复制增加了数据,不推荐使用。占用内存变多。
在这里插入图片描述

.t

转置,只适用于2D的tensor
在这里插入图片描述

transpose

两两交换维度。[b,c,h.w]transpose(1,3)之后为[b,w,h,c]
使用contiguous函数将内存顺序变成连续的。
在这里插入图片描述

permute

[b,c,h,w]permute(0,2,3,1)之后变成[b,h,w,c]。permute中的参数为原数据的位置。自动使用transpose进行任意多的转换达到目的,顺序会被打乱,遇到contiguous的错误时要使用contiguous函数把内存顺序变成连续。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/niuniu990/article/details/87950505
今日推荐