将张量复制N次

时间:2018-12-03 22:08:42

标签: tensorflow

我想将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中实现吗?

非常感谢。

2 个答案:

答案 0 :(得分:0)

您可以使用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.]]

答案 1 :(得分:0)

这是tf.tile的直接应用。

x = tf.eye(4)
y = tf.tile(x, [4,1])

with tf.Session() as sess:
    a, b = sess.run([x, y])

# a.shape = [4,4]
# b.shape = [16,4]