原文:https://blog.csdn.net/m0_38026629/article/details/86519291
原文中有稍许信息不好理解,故更改之,记下来方便查阅。
首先[]list里面的矩阵必须是一样shape的,再设:torch.sack([],dim) 设[]中有矩阵n个,x行,y列
例:torch.stack([a,b,c],dim=0)
torch.stack([a,b,c],dim=-1)
分析:
1)dim=0时,则就是讲[]中的n个矩阵变成n维,按照顺序,第i维是第i个矩阵,size=(n,x,y)
2)dim=1是,将列表[]中的每个矩阵的第一行组成第一维矩阵,故第一维数组的行数为n,列数为y;每个原矩阵共x行,故新ndarray共x维,size=(x,n,y)
3)dim=2稍微复杂一些:
3.1)每个矩阵的第一行的第一个值,组成第一维的第一行,每一个矩阵的第一行第二个值组成第一维的第二行,
以此类推,每一个矩阵的第一行第n个值,组成第一维的第n行。故新ndarray的每一维size为(y,n)--y行n列
3.2)每个原矩阵共x行,故新ndarray共x维,size=(x,y,n)
4) dim=-1,即直接按照逐个元素的累加方法进行,如[]中均是2维矩阵,则和3)同。
总结:
dim的理解方法:由总体向局部的总分结构:
对于多个二维矩阵:
dim=0,操作单位为一个矩阵
dim=1,操作单位为一个矩阵的一行
dim=2,操作单位为一个矩阵的一个元素
其它:(无论矩阵多少维)
dim=-1,操作单位为一个矩阵的一个元素