說明:np ----> numpy tf ----> tensorflownp.stack(arrays, axis=0)
np.stack(arrays, axis=0) ---- 同樣也適用於tf.stack()
numpy 和 tensorflow 都有 stack() 函數,該函數主要是用來提升維度。
在只提供數組(張量)和axis參數的前提下, 兩者的使用方法和結果一樣,原理一樣,所以這里用numpy做演示。
假設要轉變的張量數組arrays的長度為N,其中的每個張量數組的形狀為(A, B, C)。
如果軸axis=0,則轉變后的張量的形狀為(N, A, B, C)。
如果軸axis=1,則轉變后的張量的形狀為(A, N, B, C)。
如果軸axis=2,則轉變后的張量的形狀為(A, B, N, C)。其它情況依次類推。
例如:
np.stack(arrays, axis=0)則表示arrays[0], arrays[1], arrays[2]進行堆疊,所以結果與原始數組一樣。
np.stack(arrays, axis=1)則表示arrays[0][0], arrays[1][0]和arrays[2][0]進行堆疊,然后是arrays[0][1],arrays[1][1]與arrays[2][1]進行堆疊。
np.stack(arrays, axis=2)則表示arrays[0][0][0],arrays[1][0][0]和arrays[2][0][0]進行堆疊,然后是arrays[0][0][1],arrays[1][0][1]與arrays[2][0][1]進行堆疊,接着為arrays[0][0][2],arrays[1][0][2]與arrays[2][0][2]進行堆疊......
圖例說明:
注:轉化后的索引看上面藍色和綠色的線。
到這里就是我全部的理解,如有錯誤,歡迎指出。