關於tensorflow裏多維數組(主要是四維)的組織形式以前一直沒弄懂,最近遇到相關問題,算是搞清楚了一些東西,特別記下來,省得本身又遺忘了。數組
三維形式能很簡單的腦補出來三維的形狀,再也不贅述。函數
以前一直糾結四維的時候數據是怎樣填充的。特別是遇到深度學習的時候輸入都是[batch,height,width,channel],這種四維的張量的時候,是怎樣個數據的形狀。學習
先看代碼:code
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]當作是這樣形狀:blog
而[2,1,3,3]則是兩個這樣的立方體組合而成。生成這樣的一個tensor的時候依次填充[0][0][0][0], [0][0][0][1], [0][0][0][2]......深度學習
依次當求這個tensor在相應維度下的最大值座標就很好理解了,如這句代碼:io
result = tf.argmax(prediction2,3)
將返回在Z軸上最大值的座標,所以立方體第一列即[0][0][0][0], [0][0][0][1], [0][0][0][2],依次爲1,2,3, 最大爲2,返回維度爲2;同理可推出,函數返回值爲:class
[[2,2,2],tensorflow
[1,0,0]]channel
實際運行結果也相同: