Tensorflow:是否为变量提供值永久覆盖其值?

时间:2017-03-30 21:12:43

标签: tensorflow

我有一个带有一些权重的NN模型,我需要能够使用一组权重A和有时一组权重B进行推理(和学习)。 我知道我可以将值提供给变量而不仅仅是占位符,但如果我这样做,我会永久覆盖变量值,还是临时的,在请求的op节点的执行窗口内?

例如, 让我们假设我构建了图表并使用权重集A学习了一个模型。 如果我想使用另一个权重集进行推理,设置B,我可以这样做:

sess.run(output, feed_dict={input:input, weights:weightsB}) #inference

我的qeustion是,如果我输入值weightB,那么它们会永久覆盖网络的值吗?如果下次我会跑

sess.run(output, feed_dict={input:input}) #inference

它会使用weightsA还是weightB?

1 个答案:

答案 0 :(得分:4)

在TensorFlow中,一步为变量提供值不会影响存储在该变量中的值。在后续步骤中,如果您使用该变量,它将继续具有其先前的值。

请注意,如果您希望Feed在以后的步骤中更改变量的值,则应使用以下结构明确该值赋值给变量:

v = tf.Variable(...)
v_update_placeholder = tf.placeholder(v.dtype, shape=v.shape)
v_update_op = v.assign(v_update_placeholder).op

# ...

sess.run(v_update_op, feed_dict={v_update_placeholder: ...})