我遇到以下代码问题:
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
答案 0 :(得分:1)
这会创建赋值操作,但实际上并没有运行它。如果要进行一次性分配,只需运行操作。
assign_op = v_background.assign(
tf.cond(tf.less(candidate_mse, mse),
lambda: resp,
lambda: v_background)
)
sess.run(assign_op)
如果您想要一个根据值candidate_mse
和mse
在两者之间切换的值,请使用tf.where
。
v_background = tf.where(tf.less(candidate_mse, mse), resp, v_background)
sess.run(v_background)