首页 文章

在TensorFlow中不丢失随机性的平铺随机张量

提问于
浏览
-1

在下面的例子中,我有一个随机行张量 r (为了这个例子,它是一个简单的 tf.random_normal 但在我的实际代码中是一个复杂的图形,其形状我无法改变) .

看起来在TensorFlow中,只有在计算了 r 的值之后才运行 tf.tile 操作,实际上平铺张量 t 的所有行都是相同的 . 有没有办法平铺张量而不会失去每个瓷砖的随机性?

import tensorflow as tf

r = tf.random_normal(shape=[1, 2])

t = tf.tile(r, tf.pack([3, 1]), name=None)

session = tf.Session()

print(session.run(t))

session.close()

结果(所有行相同):

[[ 0.29335016  0.11843499]
 [ 0.29335016  0.11843499]
 [ 0.29335016  0.11843499]]

期望的结果(所有行分别计算):

[[ 0.29335016  0.11843499]
 [ 0.46995060  0.58384848]
 [ 0.73958005  0.95689274]]

1 回答

  • -1

    您将所有行都视为相同,因为 tf.tile 会复制第一个参数 . 在您的情况下,名为 r 的节点输出随机张量 . 这个张量被送到 tf.tile ,它复制它(即复制值)三次 .

    如果你不想要,你可以直接将指定的形状传递给 tf.random_normal() 来生成一个完全随机的张量,并符合你的形状要求 .

相关问题