深度学习与PyTorch笔记7

Tensor维度变换

view/reshape

lost dim information
view和reshape用法完全相同,将数据合并,必须要有物理意义。适用于全连接层。缺点:不好还原数据。
深度学习与PyTorch笔记7

squeeze/unsqueeze

squeeze:挤压、减少维度
深度学习与PyTorch笔记7

unsqueeze:展开、增加维度,取值范围为[-a.dim()-1,a.dim()+1)
深度学习与PyTorch笔记7
正数:在前面插入。负数:在后面插入。
深度学习与PyTorch笔记7

深度学习与PyTorch笔记7

expand/repeat

维度扩展,维度的shape改变
expand:broadcasting不会主动复制数据,推荐使用。前提:tensor原来的shape和要转变的shape要一致,只能从1到N,不能从大于1的维度开始。维度不变用-1。
深度学习与PyTorch笔记7
repeat:memory copied主动复制增加了数据,不推荐使用。占用内存变多。
深度学习与PyTorch笔记7

.t

转置,只适用于2D的tensor
深度学习与PyTorch笔记7

transpose

两两交换维度。[b,c,h.w]transpose(1,3)之后为[b,w,h,c]
使用contiguous函数将内存顺序变成连续的。
深度学习与PyTorch笔记7

permute

[b,c,h,w]permute(0,2,3,1)之后变成[b,h,w,c]。permute中的参数为原数据的位置。自动使用transpose进行任意多的转换达到目的,顺序会被打乱,遇到contiguous的错误时要使用contiguous函数把内存顺序变成连续。
深度学习与PyTorch笔记7