只有光頭才能變強。python
回顧前面:數組
不知道你們最開始接觸到axis的時候是怎麼樣的,反正我是挺難理解的..咱們能夠發現TensorFlow的不少API都有axis這個參數,若是咱們對axis不瞭解,壓根不知道API是怎麼搞的。函數
一句話總結axis:axis能夠方便咱們將數據進行不一樣維度的處理。3d
若是你像我同樣,發現API中有axis這個參數,但不知道是什麼意思。可能就會搜搜axis到底表明的什麼意思。因而可能會相似搜到下面的信息:code
使用0值表示沿着每一列或行標籤\索引值向下執行方法(axis=0表明往跨行)視頻
使用1值表示沿着每一行或者列標籤模向執行對應的方法(axis=1表明跨列)blog
但咱們又知道,咱們的數組不僅僅只有二維的,還有三維、四維等等。一旦維數超過二維,就沒法用簡單的行和列來表示了。索引
因此,能夠用我下面的方式進行理解:token
axis=0
將最開外頭的括號去除,當作一個總體,在這個總體上進行運算axis=1
將第二個括號去除,當作一個總體,在這個總體上進行運算話很少說,下面以例子說明~資源
首先,咱們來看個concat
的例子,concat第一個參數接收val,第二個參數接收的是axis
def learn_concat(): # 二維數組 t1 = tf.constant([[1, 2, 3], [4, 5, 6]]) t2 = tf.constant([[7, 8, 9], [10, 11, 12]]) with tf.Session() as sess: # 二維數組針對 axis 爲0 和 1 的狀況 print(sess.run(tf.concat([t1, t2], 0))) print(sess.run(tf.concat([t1, t2], 1)))
ok,下面以圖示的方式來講明。如今咱們有兩個數組,分別是t1和t2:
首先,咱們先看axis=0
的狀況,也就是tf.concat([t1, t2], 0)
。從上面的描述,咱們知道,先把第一個括號去除,而後將其子內容當作一個總體,在這個總體下進行想對應的運算(這裏咱們就是concat)。
因此最終的結果是:
[ [1 2 3], [4 5 6], [7 8 9], [10 11 12] ]
接着,咱們再看axis=1
的狀況,也就是tf.concat([t1, t2], 1)
。從上面的描述,咱們知道,先把第二個括號去除,而後將其子內容當作一個總體,在這個總體下進行想對應的運算(這裏咱們就是concat)。
因此最終的結果是:
[ [1, 2, 3, 7, 8, 9] [4, 5, 6, 10, 11, 12] ]
接下來咱們看一下三維的狀況
def learn_concat(): # 三維數組 t3 = tf.constant([[[1, 2], [2, 3]], [[4, 4], [5, 3]]]) t4 = tf.constant([[[7, 4], [8, 4]], [[2, 10], [15, 11]]]) with tf.Session() as sess: # 三維數組針對 axis 爲0 和 1 和 -1 的狀況 print(sess.run(tf.concat([t3, t4], 0))) print(sess.run(tf.concat([t3, t4], 1))) print(sess.run(tf.concat([t3, t4], -1)))
ok,下面也以圖示的方式來講明。如今咱們有兩個數組,分別是t3和t4:
首先,咱們先看axis=0
的狀況,也就是tf.concat([t3, t4], 0)
。從上面的描述,咱們知道,先把第一個括號去除,而後將其子內容當作一個總體,在這個總體下進行想對應的運算(這裏咱們就是concat)。
因此最終的結果是:
[ [ [1 2] [2 3] ] [ [4 4] [5 3] ] [ [7 4] [8 4] ] [ [2 10] [15 11] ] ]
接着,咱們再看axis=1
的狀況,也就是tf.concat([t3, t4], 1)
。從上面的描述,咱們知道,先把第二個括號去除,而後將其子內容當作一個總體,在這個總體下進行想對應的運算(這裏咱們就是concat)。
因此最終的結果是:
[ [ [1 2] [2 3] [7 4] [8 4] ] [ [4 4] [5 3] [2 10] [15 11] ] ]
最後,咱們來看一下axis=-1
這種狀況,在文檔也有相關的介紹:
As in Python, the
axis
could also be negative numbers. Negativeaxis
are interpreted as counting from the end of the rank, i.e.,
axis + rank(values)
-th dimension
因此,對於咱們三維的數組而言,那axis=-1
實際上就是axis=2
,下面咱們再來看一下這種狀況:
最終的結果是:
[ [ [1 2 7 4] [2 3 8 4] ] [ [4 4 2 10] [5 3 15 11] ] ]
除了concat之外,其實不少函數都用到了axis這個參數,再舉個例子:
>>> item = np.array([[1,4,8],[2,3,5],[2,5,1],[1,10,7]]) >>> item array([[1, 4, 8], [2, 3, 5], [2, 5, 1], [1, 10, 7]]) >>> item.sum(axis = 1) array([13, 10, 8, 18]) >>> item.sum(axis = 0) array([ 6, 22, 21])
參考資料:
下一篇是TensorBoard~
樂於輸出乾貨的Java技術公衆號:Java3y。公衆號內有200多篇原創技術文章、海量視頻資源、精美腦圖,不妨來關注一下!
以爲個人文章寫得不錯,不妨點一下贊!