摘要:一句話總結可以方便我們將數據進行不同維度的處理。一理解如果你像我一樣,發現中有這個參數,但不知道是什么意思。一旦維數超過二維,就無法用簡單的行和列來表示了。
前言
只有光頭才能變強。
回顧前面:
從零開始學TensorFlow【01-搭建環境、HelloWorld篇】
什么是TensorFlow?
TensorFlow讀寫數據
不知道大家最開始接觸到axis的時候是怎么樣的,反正我是挺難理解的..我們可以發現TensorFlow的很多API都有axis這個參數,如果我們對axis不了解,壓根不知道API是怎么搞的。
一句話總結axis:axis可以方便我們將數據進行不同維度的處理。一、理解axis
如果你像我一樣,發現API中有axis這個參數,但不知道是什么意思。可能就會搜搜axis到底代表的什么意思。于是可能會類似搜到下面的信息:
使用0值表示沿著每一列或行標簽索引值向下執行方法(axis=0代表往跨行)使用1值表示沿著每一行或者列標簽模向執行對應的方法(axis=1代表跨列)
但我們又知道,我們的數組不單單只有二維的,還有三維、四維等等。一旦維數超過二維,就無法用簡單的行和列來表示了。
所以,可以用我下面的方式進行理解:
axis=0將最開外頭的括號去除,看成一個整體,在這個整體上進行運算
axis=1將第二個括號去除,看成一個整體,在這個整體上進行運算
...依次類推
話不多說,下面以例子說明~
1.1二維數組之concat首先,我們來看個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] ]1.2三維數組之concat
接下來我們看一下三維的情況
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. Negative axis
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])
參考資料:
有關axis/axes的理解
https://zhuanlan.zhihu.com/p/25761406
最后下一篇是TensorBoard~
樂于輸出干貨的Java技術公眾號:Java3y。公眾號內有200多篇原創技術文章、海量視頻資源、精美腦圖,不妨來關注一下!
覺得我的文章寫得不錯,不妨點一下贊!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/43460.html
摘要:是程序員的好去處,本公眾號將以為主題,開始一個系列,爭取做到每周一篇,翻譯并幫助學習者一起理解一些有代表性的案例。所以問題當中第一個列子代表沿著列水平方向計算均值,而第二個列子代表將對應的列標簽們沿著水平的方向依次刪掉。 Stackoverflow.com是程序員的好去處,本公眾號將以pandas為主題,開始一個系列,爭取做到每周一篇,翻譯并幫助pandas學習者一起理解一些有代表性的...
摘要:本文記錄了我在學習前端上的筆記,方便以后的復習和鞏固。注意項目現在顯示的寬度是他們的默認寬度。各行將會伸展以占用剩余的空間。在其它情況下,剩余空間被所有行平分,擴大各行的側軸尺寸。這不會影響源代碼。不要忘記了,默認情況下,項目的值為。 本文記錄了我在學習前端上的筆記,方便以后的復習和鞏固。 開始使用Flex 在父元素中的顯式的設置displa...
摘要:本片記錄坐標軸入門,使用版本如何實現坐標軸生成的坐標圖是通過的路徑元素元素組成的,如下圖表示的是底部坐標軸不包括內部刻度,如下這部分通過描繪,在中稱為容器則包括了和作為即線,即文字實現坐標軸主要步驟步驟主要如下創建比例尺創建坐標軸,是個函數 本片blog記錄d3坐標軸入門,使用版本v5.9.2 SVG如何實現坐標軸 d3生成的坐標圖是通過svg的path(路徑)元素 + g + lin...
摘要:目前為止,支持類似這種多方向網站的最佳方式,依然是使用和變量。在英文網站,寬度屬性用表示,高度屬性用表示。在英文網站中更多常用于,它的值升級為代替。在英文網站中,物理屬性與邏輯屬性的表現是一致的。 原文鏈接:https://medium.com/@elad/new-... 原文作者:Elad Shechter 簡介 在過去,大多數程序猿在思考布局時總是習慣于從上下左右的角度出發。這是...
啟動 flex-box: 父元素設置 display: flex; 或 display:inline-flex; flex container: 父元素顯示設置 display: flex flex item:flex container 中的子元素 flex 容器屬性: flex-direction:控制 flex 元素沿著 main-axis 的排列方向 row:默認值,flex 元素沿...
閱讀 3313·2023-04-26 00:58
閱讀 1268·2021-09-22 16:04
閱讀 3311·2021-09-02 15:11
閱讀 1554·2019-08-30 15:55
閱讀 2339·2019-08-30 15:55
閱讀 3248·2019-08-23 18:41
閱讀 3458·2019-08-23 18:18
閱讀 2752·2019-08-23 17:53