摘要:一句話總結(jié)可以方便我們將數(shù)據(jù)進(jìn)行不同維度的處理。一理解如果你像我一樣,發(fā)現(xiàn)中有這個(gè)參數(shù),但不知道是什么意思。一旦維數(shù)超過二維,就無法用簡(jiǎn)單的行和列來表示了。
前言
只有光頭才能變強(qiáng)。
回顧前面:
從零開始學(xué)TensorFlow【01-搭建環(huán)境、HelloWorld篇】
什么是TensorFlow?
TensorFlow讀寫數(shù)據(jù)
不知道大家最開始接觸到axis的時(shí)候是怎么樣的,反正我是挺難理解的..我們可以發(fā)現(xiàn)TensorFlow的很多API都有axis這個(gè)參數(shù),如果我們對(duì)axis不了解,壓根不知道API是怎么搞的。
一句話總結(jié)axis:axis可以方便我們將數(shù)據(jù)進(jìn)行不同維度的處理。一、理解axis
如果你像我一樣,發(fā)現(xiàn)API中有axis這個(gè)參數(shù),但不知道是什么意思。可能就會(huì)搜搜a(bǔ)xis到底代表的什么意思。于是可能會(huì)類似搜到下面的信息:
使用0值表示沿著每一列或行標(biāo)簽索引值向下執(zhí)行方法(axis=0代表往跨行)使用1值表示沿著每一行或者列標(biāo)簽?zāi)O驁?zhí)行對(duì)應(yīng)的方法(axis=1代表跨列)
但我們又知道,我們的數(shù)組不單單只有二維的,還有三維、四維等等。一旦維數(shù)超過二維,就無法用簡(jiǎn)單的行和列來表示了。
所以,可以用我下面的方式進(jìn)行理解:
axis=0將最開外頭的括號(hào)去除,看成一個(gè)整體,在這個(gè)整體上進(jìn)行運(yùn)算
axis=1將第二個(gè)括號(hào)去除,看成一個(gè)整體,在這個(gè)整體上進(jìn)行運(yùn)算
...依次類推
話不多說,下面以例子說明~
1.1二維數(shù)組之concat首先,我們來看個(gè)concat的例子,concat第一個(gè)參數(shù)接收val,第二個(gè)參數(shù)接收的是axis
def learn_concat(): # 二維數(shù)組 t1 = tf.constant([[1, 2, 3], [4, 5, 6]]) t2 = tf.constant([[7, 8, 9], [10, 11, 12]]) with tf.Session() as sess: # 二維數(shù)組針對(duì) axis 為0 和 1 的情況 print(sess.run(tf.concat([t1, t2], 0))) print(sess.run(tf.concat([t1, t2], 1)))
ok,下面以圖示的方式來說明?,F(xiàn)在我們有兩個(gè)數(shù)組,分別是t1和t2:
首先,我們先看axis=0的情況,也就是tf.concat([t1, t2], 0)。從上面的描述,我們知道,先把第一個(gè)括號(hào)去除,然后將其子內(nèi)容看成一個(gè)整體,在這個(gè)整體下進(jìn)行想對(duì)應(yīng)的運(yùn)算(這里我們就是concat)。
所以最終的結(jié)果是:
[ [1 2 3], [4 5 6], [7 8 9], [10 11 12] ]
接著,我們?cè)倏?b>axis=1的情況,也就是tf.concat([t1, t2], 1)。從上面的描述,我們知道,先把第二個(gè)括號(hào)去除,然后將其子內(nèi)容看成一個(gè)整體,在這個(gè)整體下進(jìn)行想對(duì)應(yīng)的運(yùn)算(這里我們就是concat)。
所以最終的結(jié)果是:
[ [1, 2, 3, 7, 8, 9] [4, 5, 6, 10, 11, 12] ]1.2三維數(shù)組之concat
接下來我們看一下三維的情況
def learn_concat(): # 三維數(shù)組 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: # 三維數(shù)組針對(duì) 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,下面也以圖示的方式來說明?,F(xiàn)在我們有兩個(gè)數(shù)組,分別是t3和t4:
首先,我們先看axis=0的情況,也就是tf.concat([t3, t4], 0)。從上面的描述,我們知道,先把第一個(gè)括號(hào)去除,然后將其子內(nèi)容看成一個(gè)整體,在這個(gè)整體下進(jìn)行想對(duì)應(yīng)的運(yùn)算(這里我們就是concat)。
所以最終的結(jié)果是:
[ [ [1 2] [2 3] ] [ [4 4] [5 3] ] [ [7 4] [8 4] ] [ [2 10] [15 11] ] ]
接著,我們?cè)倏?b>axis=1的情況,也就是tf.concat([t3, t4], 1)。從上面的描述,我們知道,先把第二個(gè)括號(hào)去除,然后將其子內(nèi)容看成一個(gè)整體,在這個(gè)整體下進(jìn)行想對(duì)應(yīng)的運(yùn)算(這里我們就是concat)。
所以最終的結(jié)果是:
[ [ [1 2] [2 3] [7 4] [8 4] ] [ [4 4] [5 3] [2 10] [15 11] ] ]
最后,我們來看一下axis=-1這種情況,在文檔也有相關(guān)的介紹:
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
所以,對(duì)于我們?nèi)S的數(shù)組而言,那axis=-1實(shí)際上就是axis=2,下面我們?cè)賮砜匆幌逻@種情況:
最終的結(jié)果是:
[ [ [1 2 7 4] [2 3 8 4] ] [ [4 4 2 10] [5 3 15 11] ] ]
除了concat以外,其實(shí)很多函數(shù)都用到了axis這個(gè)參數(shù),再舉個(gè)例子:
>>> 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])
參考資料:
有關(guān)axis/axes的理解
https://zhuanlan.zhihu.com/p/25761406
最后下一篇是TensorBoard~
樂于輸出干貨的Java技術(shù)公眾號(hào):Java3y。公眾號(hào)內(nèi)有200多篇原創(chuàng)技術(shù)文章、海量視頻資源、精美腦圖,不妨來關(guān)注一下!
覺得我的文章寫得不錯(cuò),不妨點(diǎn)一下贊!
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/43460.html
摘要:是程序員的好去處,本公眾號(hào)將以為主題,開始一個(gè)系列,爭(zhēng)取做到每周一篇,翻譯并幫助學(xué)習(xí)者一起理解一些有代表性的案例。所以問題當(dāng)中第一個(gè)列子代表沿著列水平方向計(jì)算均值,而第二個(gè)列子代表將對(duì)應(yīng)的列標(biāo)簽們沿著水平的方向依次刪掉。 Stackoverflow.com是程序員的好去處,本公眾號(hào)將以pandas為主題,開始一個(gè)系列,爭(zhēng)取做到每周一篇,翻譯并幫助pandas學(xué)習(xí)者一起理解一些有代表性的...
摘要:本文記錄了我在學(xué)習(xí)前端上的筆記,方便以后的復(fù)習(xí)和鞏固。注意項(xiàng)目現(xiàn)在顯示的寬度是他們的默認(rèn)寬度。各行將會(huì)伸展以占用剩余的空間。在其它情況下,剩余空間被所有行平分,擴(kuò)大各行的側(cè)軸尺寸。這不會(huì)影響源代碼。不要忘記了,默認(rèn)情況下,項(xiàng)目的值為。 本文記錄了我在學(xué)習(xí)前端上的筆記,方便以后的復(fù)習(xí)和鞏固。 開始使用Flex 在父元素中的顯式的設(shè)置displa...
摘要:本片記錄坐標(biāo)軸入門,使用版本如何實(shí)現(xiàn)坐標(biāo)軸生成的坐標(biāo)圖是通過的路徑元素元素組成的,如下圖表示的是底部坐標(biāo)軸不包括內(nèi)部刻度,如下這部分通過描繪,在中稱為容器則包括了和作為即線,即文字實(shí)現(xiàn)坐標(biāo)軸主要步驟步驟主要如下創(chuàng)建比例尺創(chuàng)建坐標(biāo)軸,是個(gè)函數(shù) 本片blog記錄d3坐標(biāo)軸入門,使用版本v5.9.2 SVG如何實(shí)現(xiàn)坐標(biāo)軸 d3生成的坐標(biāo)圖是通過svg的path(路徑)元素 + g + lin...
摘要:目前為止,支持類似這種多方向網(wǎng)站的最佳方式,依然是使用和變量。在英文網(wǎng)站,寬度屬性用表示,高度屬性用表示。在英文網(wǎng)站中更多常用于,它的值升級(jí)為代替。在英文網(wǎng)站中,物理屬性與邏輯屬性的表現(xiàn)是一致的。 原文鏈接:https://medium.com/@elad/new-... 原文作者:Elad Shechter 簡(jiǎn)介 在過去,大多數(shù)程序猿在思考布局時(shí)總是習(xí)慣于從上下左右的角度出發(fā)。這是...
啟動(dòng) flex-box: 父元素設(shè)置 display: flex; 或 display:inline-flex; flex container: 父元素顯示設(shè)置 display: flex flex item:flex container 中的子元素 flex 容器屬性: flex-direction:控制 flex 元素沿著 main-axis 的排列方向 row:默認(rèn)值,flex 元素沿...
閱讀 3326·2023-04-26 00:58
閱讀 1277·2021-09-22 16:04
閱讀 3323·2021-09-02 15:11
閱讀 1568·2019-08-30 15:55
閱讀 2348·2019-08-30 15:55
閱讀 3277·2019-08-23 18:41
閱讀 3470·2019-08-23 18:18
閱讀 2760·2019-08-23 17:53