赞
踩
做数据操作的时候发现计算错误,检查才知道是reshape和transpose混了。这里对两者的对比做个笔记。
代码:
- a = torch.rand((3,4))
- print(a)
- print('transpose',a.transpose(0,1))
- print('reshape',a.reshape(4,3))
输出:
- tensor([[0.0908, 0.6192, 0.1025, 0.7192],
- [0.4392, 0.2334, 0.2123, 0.2559],
- [0.5325, 0.2606, 0.4103, 0.6293]])
- transpose tensor([[0.0908, 0.4392, 0.5325],
- [0.6192, 0.2334, 0.2606],
- [0.1025, 0.2123, 0.4103],
- [0.7192, 0.2559, 0.6293]])
- reshape tensor([[0.0908, 0.6192, 0.1025],
- [0.7192, 0.4392, 0.2334],
- [0.2123, 0.2559, 0.5325],
- [0.2606, 0.4103, 0.6293]])
可以看到transpose是类似于矩阵转置的操作,而reshape则是flatten后再切分成新的数组。
这个区别在深度学习中还是很重要的,或许就因为这种原因使模型表现不好。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。