Tebsorflow中的两个向量的拼接
tensorflow中的concat方法(tf.concat)可以进行两个向量的拼接,共有两个参数:
1、要拼接的两个向量;
2、要拼接的维度,从0开始。
1 t1 = [[1, 2, 3], [4, 5, 6]] 2 t2 = [[7, 8, 9], [10, 11, 12]] 3 tf.concat([t1, t2], 0) # [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]] 4 tf.concat([t1, t2], 1) # [[1, 2, 3, 7, 8, 9], [4, 5, 6, 10, 11, 12]] 5 6 # tensor t3 with shape [2, 3] 7 # tensor t4 with shape [2, 3] 8 tf.shape(tf.concat([t3, t4], 0)) # [4, 3] 9 tf.shape(tf.concat([t3, t4], 1)) # [2, 6]
解释:
第一个拼接是在0维度进行拼接,将这两个向量的行进行拼接,即两个[2,3](2行3列)的向量0维度拼接后会变成[4,3](4行3列)
第二个拼接是在1维度进行拼接,将这两个向量的列进行拼接,即两个[2,3](2行3列)的向量1维度拼接后会变成[2,6](2行6列)
在进行搭建神经网络是为了拓宽网络的宽度,会进行两个向量的拼接,而经过卷积后的向量都是四维的([?, x,y,channel]),而我们需要将第二个向量拼接到第一个向量后面,通道数进行相加,所以应当是在3维度进行拼接。即tf.concat([conv1,conv2],3)。