我想将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中实现吗?
非常感谢。
答案 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]