首页 > 解决方案 > 复制张量 N 次

问题描述

我想复制 tf.eye(4) N 次,但我不知道该怎么做。例如:tf.eye(4)

[[1., 0., 0., 0.],
 [0., 1., 0., 0.],
 [0., 0., 1., 0.],
 [0., 0., 0., 1.]]

我需要将这 4 个张量(4x4 矩阵)复制 N 次。

[[1., 0., 0., 0.],
[0., 1., 0., 0.],
[0., 0., 1., 0.],
[0., 0., 0., 1.],
[1., 0., 0., 0.],
[0., 1., 0., 0.],
[0., 0., 1., 0.],
[0., 0., 0., 1.],
[1., 0., 0., 0.],...

有什么想法可以在 tensorflow 中轻松做到这一点吗?

非常感谢。

标签: tensorflow

解决方案


您可以使用tf.tile来实现。您将长度列表传递给它,该列表等于要复制的张量中的维数。此列表中的每个值对应于您要沿特定维度复制的次数。这是一个例子:

# tesnosr of size [4, 4]
a = tf.constant([[1., 0., 0., 0.],
                 [0., 1., 0., 0.],
                 [0., 0., 1., 0.],
                 [0., 0., 0., 1.]],)

# replicate 2 times along first dimension
multiples = [2, 1]

b = tf.tile(a, multiples)

sess = tf.InteractiveSession()

print(sess.run(b))

# [[1. 0. 0. 0.]
#  [0. 1. 0. 0.]
#  [0. 0. 1. 0.]
#  [0. 0. 0. 1.]
#  [1. 0. 0. 0.]
#  [0. 1. 0. 0.]
#  [0. 0. 1. 0.]
#  [0. 0. 0. 1.]]

推荐阅读