tf.concat函數(shù):函數(shù)功能比較簡單,主要用于連接兩個(gè)數(shù)組
參數(shù):
values:需要連接的數(shù)組,注意數(shù)組的維度應(yīng)該一致
axis:從哪個(gè)維度來連接數(shù)組
例子:
1.一維數(shù)組
import tensorflow as tf
if __name__ == "__main__":
a = [1,2,3]
b = [4,5,6]
c = tf.concat([a,b],0)
sess = tf.InteractiveSession()
print(sess.run(c)) #[1 2 3 4 5 6]
注意:axis參數(shù)不能超過數(shù)組的維度。如果超過數(shù)組的維度,如下:
c = tf.concat([a,b],1)
則會報(bào),ValueError: Shape must be at least rank 2 but is rank 1 for 'concat',意思是數(shù)組至少是二維,axis才能為1。
2.二維數(shù)組
a = [[1,1],[2,2],[3,3]]
b = [[4,4],[5,5],[6,6]]
c = tf.concat([a,b],0)
print(sess.run(c))
"""
[[1 1]
[2 2]
[3 3]
[4 4]
[5 5]
[6 6]]
"""
c = tf.concat([a,b],1) #等價(jià)于tf.concat([a,b],-1)
print(sess.run(c))
"""
[[1 1 4 4]
[2 2 5 5]
[3 3 6 6]]
"""
3.三維數(shù)組
a = [[[1,1],[2,2]],[[3,3],[4,4]]]
b = [[[5,5]],[[6,6]]]
c = tf.concat([a,b],1)
print(sess.run(c))
"""
[[[1 1]
[2 2]
[5 5]]
[[3 3]
[4 4]
[6 6]]]
"""
a = [[1, 2], [3, 4]] b = [[5, 6]] c = np.concatenate((a, b), axis=None) """ [[1,2,3,4,5,6]] """
5.如何來判斷數(shù)組是否在該個(gè)維度上的shape是相同的呢?
其實(shí)很簡單,我們根據(jù)tf.concat的axis參數(shù)來去數(shù)組的[],0表示去掉最外面的一層,1去掉兩層,以此類推,下面舉例說明一下。
如:最后一個(gè)例子中的c = tf.concat([a,b],1),我們先將a去掉最外面兩層[],變成了[1,1],[2,2]和[3,3],[4,4]],然后再將b去掉最外面兩層[],變成了[5,5]和[6,6],此時(shí)再進(jìn)行concat,可以發(fā)現(xiàn)此時(shí)的shape是相等的。
參考:
https://blog.csdn.net/sinat_29957455/article/details/86100641