重复的 Tensorflow 正态分布对象

Duplicate Tensorflow normal distribution objects

给定以下代码:

import tensorflow as tf

normal_dist = tf.contrib.distributions.Normal(.5, 1.3)
foo = normal_dist.sample()
bar = normal_dist.sample()
baz = foo + bar

sess = tf.Session()
sess.run(tf.global_variables_initializer())
writer = tf.summary.FileWriter("./logs", graph=tf.get_default_graph())

对于总共三个对象,正态分布对象被复制了两次,这很糟糕,因为如您所见,它们都是相同的分布(相同的均值、标准差)。

有没有办法不重复?或者优化方法?寻找最佳实践。

sample() 方法创建一个 new 张量,它从分布中接收随机值。在幕后,Normal 使用 tf.random_normal op,它本身也会在调用时在图中创建一个新节点。

如果不想每次都创建新的操作,您可以简单地多次评估相同的随机张量:

...
with tf.Session() as sess:
  print(sess.run(foo))
  print(sess.run(foo))
  print(sess.run(foo))

...每次都会输出不同的随机值。

顺便说一句,注意张量板图片上的Normal_1Normal_2不是对象,而是包含要计算的操作的names scopes值(您可以展开并放大以查看)。底部 Normal 也是一个范围,其中包含 foobar.

的一些常用张量