tensorflow之argmax函數獨特講解

在講解之前,先來一個該函數的參數說明:

argmax(a, axis=None, out=None)
# a 表示array
# axis 表示指定的軸,默認是None,表示把array平鋪,
# out 默認爲None,如果指定,那麼返回的結果會插入其中

對於axis這個參數,對於大家來說是最困惑或者是最頭疼的事情,相信你在網上看到很多這樣的結論:axis=0時,返回列最大的索引值;axis=1時,返回行最大的索引值;你也許也看到過使用投影的方法,可以參考:https://www.cnblogs.com/psztswcbyy/p/9282530.html

不過這些結論我們經常混淆,如:行和列記反了,而使用投影的方式分析起來比較晦澀難懂

 

好了,今天帶大家使用數中括號[]的方式來快速得出答案

 

以三維數組進行講解,其它的維度分析過程差不多

array=[[[0,16],[14,5]],
       [[16,6],[19,2]],
       [[11,11],[5,7]]
      ]

1   當axis=0時,即tensorflow.argmax(array,axis=0),好了,我們現在開始數中括號,

可以寫成array=[大元素1,大元素2,大元素3],現在比較的是各大元素之間對應元素的值,然後得出索引,最終輸出的結果一定是類似這樣的結構如下:      [大元素1]

現在講解各大對應元素索引的計算:

所以最終結果拼接起來爲     [大元素]=[[[1,0],[1,2]]],由於最外一層中括號在表示時顯得多此一舉了,所以最終結果爲:

[[1,0],[1,2]]

 

編寫程序驗證如下:

 

可能你看到這裏還是沒明白我想表達什麼,莫急,且聽我分析完axis=1和axis=2的情況再來對比就明白了

 

2  axis=1時,數第二個中括號,如下圖:

 

可以寫成:array=[[大元素1,大元素2],[大元素1,大元素2],[大元素1,大元素2]],最終輸出的結果一定是類似這樣的結構如下:   [[大元素1,大元素2]]

現在講解各大對應元素索引的計算:

 

最終結果爲:[[1,0],[1,0],[0,0]]

程序驗證如下:

 

3  當axis=2時,數第三個中括號,如下圖:

可以寫成:

array=[[[大元素1,大元素2],[大元素1,大元素2]],

[[大元素1,大元素2],[大元素1,大元素2]],

[[大元素1,大元素2],[大元素1,大元素2]]

],

最終輸出的結果一定是類似這樣的結構如下:

[[[大元素1],[大元素1]],

[[大元素1],[大元素1]],

[[大元素1],[大元素1]]

]

其實所謂的大元素只剩下一個元素,所以中括號顯得多餘了,可以寫成:

[[大元素1,大元素1],

[大元素1,大元素1],

[大元素1,大元素1]

]

現在講解各大對應元素索引的計算:

 

程序驗證如下:

4  axis不可能等於3了,因爲所謂的大元素只有一個元素了

 

好了,分析到這裏了,二維和無窮多維的分析方法一樣,其實核心思想都是使用投影的方法,最後給一張以投影方式的三維圖,請自己分析了,如下圖:

   

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章