首页 > 解决方案 > Tensorflow:垂直堆叠矩阵的最佳方法?

问题描述

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

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

我想垂直堆叠这些二维矩阵,使得生成的二维张量的尺寸为 [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)

标签: pythontensorflow

解决方案


你可以重塑:

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))

推荐阅读