tensorflow 張量的合併

2021-10-07 12:57:15 字數 2185 閱讀 2025

張量的合併是指將多個張量在某個維度上合併為乙個張量。合併操作又可以分為拼接(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 ...