覆盖Tensorflow

时间:2017-08-31 06:00:19

标签: tensorflow

我遇到以下代码问题:

v_background.assign(
   tf.cond(tf.less(candidate_mse, mse),
   lambda: resp,
   lambda: v_background)
 )

基本上我想要发生的是当candidate_mse低于旧的mse时,v_background将被resp覆盖,否则它将保持不变。问题是我打电话

v_background.eval()

无论mse如何,它似乎都具有初始值。

print(mse.eval())
print(candidate_mse.eval())

结果

0.0314396114956
0.031410553229

1 个答案:

答案 0 :(得分:1)

这会创建赋值操作,但实际上并没有运行它。如果要进行一次性分配,只需运行操作。

assign_op = v_background.assign(
   tf.cond(tf.less(candidate_mse, mse),
   lambda: resp,
   lambda: v_background)
 )
 sess.run(assign_op)

如果您想要一个根据值candidate_msemse在两者之间切换的值,请使用tf.where

v_background = tf.where(tf.less(candidate_mse, mse), resp, v_background)
sess.run(v_background)