通过重复列来扩展 Tensorflow 中二维张量的宽度

Posted

技术标签:

【中文标题】通过重复列来扩展 Tensorflow 中二维张量的宽度【英文标题】:Expanding width of a 2D tensor in Tensorflow, by repeating its columns 【发布时间】:2017-06-02 17:14:28 【问题描述】:

我有一个二维张量,它必须在宽度(列号)方向上扩展。在下面的示例中,我想通过重复其列使 B 与 A 一样宽。

这可以通过以下方式在 numpy 中完成:

A = np.array([[1,2,3],[4,5,6],[6,7,8]])
B = np.array([[19,15],[18,14],[17,13]])

ncl = A.shape[1]

B = B[:,np.mod(np.arange(ncl),B.shape[1])]
print(B)

产量:

[[19 15 19]
 [18 14 18]
 [17 13 17]]

如何在 Tensorflow 中对两个常数张量 A 和 B 执行此操作?

【问题讨论】:

关于如何做到这一点的任何想法? 【参考方案1】:
A = tf.constant([[1,2,3,4,4,5,6,7],[4,5,6,6,4,5,6,7],[6,7,8,9,4,5,6,7]])
B = tf.constant([[19,15],
             [18,14],
             [17,13]])

diff = A.get_shape()[1] - B.get_shape()[1]

Bt = tf.transpose(B)
for idx in range(diff):
    col = tf.gather_nd(Bt, [[idx]])
    Bt = tf.concat(0, [Bt, col])

result = tf.transpose(Bt)

with tf.Session() as sess:
    res = sess.run(result)
    print(res)

不是有史以来最漂亮的代码,但它确实有效。

输出:

[[19 15 19 15 19 15 19 15]
 [18 14 18 14 18 14 18 14]
 [17 13 17 13 17 13 17 13]]

【讨论】:

以上是关于通过重复列来扩展 Tensorflow 中二维张量的宽度的主要内容,如果未能解决你的问题,请参考以下文章

入门级_Tensorflow网络搭建

从keras中的扩展张量制作输入特征图

在 Tensorflow 中使用索引对张量进行切片

如何在 TensorFlow 中选择 2D 张量的某些列?

AI - TensorFlow Tensor

-神经网络TensorFlow实现