最近发现了一个现象,想谈谈一点看法。
矩阵:
eg:
print(torch.Tensor(3,3,1,2))
tensor([[[[9.3425e+27, 3.0879e-41]],
[[1.4138e+28, 3.0879e-41]],
[[8.9683e-44, 0.0000e+00]]],
[[[1.1210e-43, 0.0000e+00]],
[[4.8198e+27, 3.0879e-41]],
[[3.0829e-44, 0.0000e+00]]],
[[[ nan, 1.0903e+27]],
[[4.4721e+21, 2.8799e+32]],
[[1.1160e+04, 7.1443e+31]]]])
很明显,这是一个shape为(3,3,1,2)的矩阵,注意表示出来的时候,人家就是有四个嵌套的【】。读的时候,要注意,第一个【】里的数据 是三个矩阵,每个的shape都是(3,1,2)。这个时候,第一个【】仍然有用,所以总的shape是(3,3,1,2)。
eg:
print(torch.Tensor(1,2))
tensor([[3.4538e+28, 3.0879e-41]])
这个同样是一个shape为(1,2)的矩阵,外面有两个【】。
列表:
[[[116, 90], [156, 198], [373, 326]],
[[30, 61], [62, 45], [59, 119]],
[[10, 13], [16, 30], [33, 23]]]
很明显,这个列表,如果还是按照矩阵的读法,shape像是(3,3,1,2),但是注意,它只有三个【】在嵌套。因为不符合矩阵语法,故没有shape函数可以调用。
注:list 转化为 array 以后,也可以使用shape
aaa=[[[1,2]],[[3,4]],[[5,6]]]
aaa=np.array(aaa)
aaa.shape
(3, 1, 2)