關於tensorflow里多維數組(主要是四維)的組織形式之前一直沒弄懂,最近遇到相關問題,算是搞清楚了一些東西,特別記下來,免得自己又遺忘了。
三維形式能很簡單的腦補出來三維的形狀,不再贅述。
之前一直糾結四維的時候數據是怎樣填充的。特別是遇到深度學習的時候輸入都是[batch,height,width,channel],這種四維的張量的時候,是怎樣個數據的形狀。
先看代碼:
prediction2 = tf.constant([1,2,3,4,5,6,7,8,9,13,14,14,15,1,6,34,23,7],shape=[2,1,3,3])
生成一個shape為 [2,1,3,3]的tensor,具體生成的時候按照一個維度一個維度填充的,先填充最“里面”的維度,這里指維度3,然后往外依次填充。因此可以將[1,1,3,3]看成是這樣形狀:
而[2,1,3,3]則是兩個這樣的立方體組合而成。生成這樣的一個tensor的時候依次填充[0][0][0][0], [0][0][0][1], [0][0][0][2]......
依次當求這個tensor在相應維度下的最大值坐標就很好理解了,如這句代碼:
result = tf.argmax(prediction2,3)
將返回在Z軸上最大值的坐標,因此立方體第一列即[0][0][0][0], [0][0][0][1], [0][0][0][2],依次為1,2,3, 最大為2,返回維度為2;同理可推出,函數返回值為:
[[2,2,2],
[1,0,0]]
實際運行結果也相同: