Tensorflow:垂直堆叠矩阵的最佳方法?

时间:2018-08-06 11:52:12

标签: python tensorflow

假设我有一个3D张量,表示几个2D矩阵:

3D_tensor = tf.random_uniform([N0, N1, N2], 1, -1))

我想垂直堆叠这些2D矩阵,以使所得2D张量的尺寸为[N0 + N1,N2]。这样做是最好的方法?

numpy进程将是以下进程:

3D = np.array([ [[1,2],[3,4]] , [[1,2],[3,4]] ]) # 3D.shape = (2,2,2)
2D = np.vstack(3D) # D2.shape = (4,2)

1 个答案:

答案 0 :(得分:0)

您可以重塑:

import tensorflow as tf

D3 = tf.constant([ [[1,2],[3,4]] , [[1,2],[3,4]] ])
D2 = tf.reshape(D3, shape=(4,2))

with tf.Session() as sess:
    print(D2.eval())

给予

[[1 2]
 [3 4]
 [1 2]
 [3 4]]

与您的numpy示例相对应。

或者,您可以先split,然后再concat

D3_split = tf.split(D3, axis=-1, num_or_size_splits=2)
D2_bis = tf.squeeze(tf.concat(D3_split, axis=0))