搞懂reshape
作用:
reshape是用来对多维数据进行重新排布的
假设现在有一个(2,3,4)的Tensor。
如果但看2轴的数据,就是一个长度为4的向量。现在再看1轴和二轴的数据,表示有3个长度为4的向量,组成了一个二维Tensor[3,4],这个时候再来联系0轴,表示有2两个二维Tensor[3,4],依次这么往前推。
现在假设reshape成(6,4)
也是优先对最后一个轴的数据进行重新排布,此时最后一个轴的长度还是为4,那么这一个轴的数据就不需要动,1轴从原本的3变成了6,那么当前轴的数据肯定是不够分配的,所以就从前面了0轴搬运数据到1轴进行扩大。
现在假设reshape成(6,2,2)
最后一轴的数据由4,变成2,那么最后一个轴的向量就由4变成了2,但还多出了2两个数据怎么办?此时就变成了(2,2)表示有2个2维tensor,2个此时可以放到1轴上,就变成了(2,6,2),但是1轴上的长度了变成了2,就要再往前扩充
这个是reshape成(12,2)的情况
先是2轴上的数据都变成2,再考虑1轴,最后考虑0轴。