張量的合併是指將多個張量在某個維度上合併為乙個張量。合併操作又可以分為拼接(concat)和堆疊(stack)。
在tensorflow中的實現是:
tf.concat(values, axis, name=『concat』)
解釋就是:將張量列表values中的張量沿著維度axis拼接起來。有一點需要注意的是,張量列表values中的張量,要拼接的維度不一定要相等,但是其他的維度一定要相等。比如說tensor_1的維度是[4,4],tensor_2的維度是[4,3]
import tensorflow as tf
tensor_1 =[[
1,2,
3,4]
,[1,
2,3,
4],[
1,2,
3,4]
,[1,
2,3,
4]]#shape = [4,4]
tensor_2 =[[
1,2,
3],[
1,2,
3],[
1,2,
3],[
1,2,
3]]#shape = [4,3]
t_c_0 = tf.concat(
[tensor_1, tensor_2]
, axis=0)
t_c_1 = tf.concat(
[tensor_1, tensor_2]
, axis=1)
#結果怎麼樣,複製到機器上執行看看。
t1 =[[
1,2,
3],[
4,5,
6]]#shape = [2,3]
t2 =[[
7,8,
9],[
10,11,
12]]#shape = [2,3]
#沿著維度0進行連線
t3 = tf.concat(
[t1,t2]
, axis=0)
#shape = [4,3]
#t3 = [[1,2,3], [4,5,6], [7,8,9], [10,11,12]]
#沿著維度1進行連線
t4 = tf.concat(
[t1,t2]
, axis=1)
#shape = [2,6]
#t4 = [[1,2,3,4,5,6], [7,8,9,10,11,12]]
tf.concat直接在現有的維度上面合併資料,並不會建立新的維度。如果在合併資料時,希望建立乙個新的維度,則需要使用tf.stack操作,也就是堆疊操作:
tf.stack(values, axis=0, name=『stack』)
解釋就是:將階為r的張量堆疊成階r+1的張量。將張量列表values中的張量,沿著維度axis堆疊。
假如給定的張量列表中張量的形狀是(a,b,c),
如果沿著axis=0堆疊,那麼堆疊後的張量形狀為(n,a,b,c);
如果沿著axis=1堆疊,那麼堆疊後的張量形狀為(a,n,b,c)。
satck操作對維度的要求更加嚴格,要堆疊的張量,維度必須要完全一樣。
import tensorflow as tf
x = tf.constant([1
,4])
#shape = (2)
y = tf.constant([2
,5])
#shape = (2)
z = tf.constant([3
,6])
#shape = (2)
#沿著預設的維度0進行堆疊
t3 = tf.concat(
[x,y,z]
)#shape = (3,2),產生的乙個新的維度
#t3 = [[1,4], [2,5], [3,6]]
#沿著維度1進行堆疊
t4 = tf.stack(
[x,y,z]
, axis=1)
#shape = (2,3)
#t4 = [[1,2,3], [4,5,6]]
#至於這個堆疊過程,我覺得:如果要操作的維度不是0的話,就把原來的張量合併為乙個[1,x]的張量,然後再劃分為(org_dim, new_dim)
參考:
1、tensorflow深度學習實戰大全。李明軍 著
2、tensorflow2深度學習。龍龍老師 著
tensorflow 張量的理解
可以把張量理解成乙個陣列或列表,乙個張量有乙個靜態型別和動態型別的維數.張量可以在圖中的節點之間流通.在tensorflow系統中,張量的維數來被描述為階.但是張量的階和矩陣的階並不是同乙個概念.張量的階 有時是關於如順序或度數或者是n維 是張量維數的乙個數量描述.比如,下面的張量 使用python...
Tensorflow實戰 張量
import tensorflow as tf tf.constant 是乙個計算,這個計算的結果為乙個張量,儲存在變數a中。a tf.constant 1.0,2.0 name a b tf.constant 2.0,3.0 name b result tf.add a,b,name add pr...
tensorflow 張量生成
coding utf 8 import tensorflow as tf import numpy as np 建立張量 a tf.constant 1 5 dtype tf.int64 print a a print a.dtype a.dtype print a.shape a.shape a ...