假设我有一个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)
答案 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))