只有光頭才能變強。回顧前面:
不知道大家最開始接觸到axis的時候是怎麼樣的,反正我是挺難理解的…我們可以發現tensorflow的很多api都有axis這個引數,如果我們對axis不了解,壓根不知道api是怎麼搞的。
一句話總結axis:axis可以方便我們將資料進行不同維度的處理。如果你像我一樣,發現api中有axis這個引數,但不知道是什麼意思。可能就會搜搜axis到底代表的什麼意思。於是可能會類似搜到下面的資訊:
使用0值表示沿著每一列或行標籤\索引值向下執行方法(axis=0代表往跨行)但我們又知道,我們的陣列不單單只有二維的,還有三維、四維等等。一旦維數超過二維,就無法用簡單的行和列來表示了。使用1值表示沿著每一行或者列標籤模向執行對應的方法(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
23],
[456
],[7
89],
[101112
]]
接著,我們再看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)。
所以最終的結果是:
[[[
12][
23]]
[[44
][53
]][[
74][
84]]
[[210
][1511]]
]
接著,我們再看axis=1
的情況,也就是tf.concat([t3, t4], 1)
。從上面的描述,我們知道,先把第二個括號去除,然後將其子內容看成乙個整體,在這個整體下進行想對應的運算(這裡我們就是concat)。
所以最終的結果是:
[[[
12][
23][
74][
84]]
[[44
][53
][210
][1511]]
]
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
,下面我們再來看一下這種情況:
最終的結果是:
[[[
1274
][23
84]]
[[44
210][
531511]]
]
除了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?
只有光頭才能變強。回顧前面 不知道大家最開始接觸到axis的時候是怎麼樣的,反正我是挺難理解的.我們可以發現tensorflow的很多api都有axis這個引數,如果我們對axis不了解,壓根不知道api是怎麼搞的。一句話總結axis axis可以方便我們將資料進行不同維度的處理。如果你像我一樣,發...
如何理解Axis?
只有光頭才能變強。回顧前面 不知道大家最開始接觸到axis的時候是怎麼樣的,反正我是挺難理解的.我們可以發現tensorflow的很多api都有axis這個引數,如果我們對axis不了解,壓根不知道api是怎麼搞的。一句話總結axis axis可以方便我們將資料進行不同維度的處理。如果你像我一樣,發...
快速理解axis
axis在tensorflow和numpy中式經常出現的乙個引數,但是有時可能並不是很好的理解axis 0或者axis 1是沿著什麼方向進行計算的,經過我的實踐,在這裡寫出理解。in 10 a out 10 array 1,2,3 4,5,6 in 11 np.amax a axis 0 out 1...