Tensorflow——tf.concat的用法

定義

tf.concat是連接兩個(gè)矩陣的操作
tf.concat(concat_dim, values, name='concat')
除去name參數(shù)用以指定該操作的name,與方法有關(guān)的一共兩個(gè)參數(shù):

  • concat_dim
    必須是一個(gè)數(shù),表明在哪一維上連接。 如果concat_dim是0,那么在某一個(gè)shape的第一個(gè)維度上連,對應(yīng)到實(shí)際,就是疊放到列上
t1 = [[1, 2, 3], [4, 5, 6]]
t2 = [[7, 8, 9], [10, 11, 12]]
tf.concat(0, [t1, t2]) == > [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]

如果concat_dim是1,那么在某一個(gè)shape的第二個(gè)維度上連

t1 = [[1, 2, 3], [4, 5, 6]]
t2 = [[7, 8, 9], [10, 11, 12]]
tf.concat(1, [t1, t2]) ==> [[1, 2, 3, 7, 8, 9], [4, 5, 6, 10, 11, 12]]

如果有更高維,最后連接的依然是指定那個(gè)維:

values[i].shape = [D0, D1, ... Dconcat_dim(i), ...Dn]
連接后就是:[D0, D1, ... Rconcat_dim, ...Dn]
# tensor t3 with shape [2, 3]  
# tensor t4 with shape [2, 3]  
tf.shape(tf.concat(0, [t3, t4])) ==> [4, 3]  
tf.shape(tf.concat(1, [t3, t4])) ==> [2, 6] 
  • values
    就是兩個(gè)或者一組待連接的tensor了

這里要注意的是:如果是兩個(gè)向量,它們是無法調(diào)用tf.concat(1, [t1, t2])來連接的,因?yàn)樗鼈儗?yīng)的shape只有一個(gè)維度,當(dāng)然不能在第二維上連了,雖然實(shí)際中兩個(gè)向量可以在行上連,但是放在程序里是會(huì)報(bào)錯(cuò)的
如果要連,必須要調(diào)用tf.expand_dims來擴(kuò)維:

t1=tf.constant([1,2,3])
t2=tf.constant([4,5,6])
#concated = tf.concat(1, [t1,t2])這樣會(huì)報(bào)錯(cuò)
t1=tf.expand_dims(tf.constant([1,2,3]),1)
t2=tf.expand_dims(tf.constant([4,5,6]),1)
concated = tf.concat(1, [t1,t2])#這樣就是正確的

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容