Tensorflow:将值提供给变量是否会永久覆盖其值?

Ufo*_*bot 1 tensorflow

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

例如,假设我使用权重集合A构建了图形并学习了一个模型。如果我想使用另一个权重集合B进行推理,则可以执行以下操作:

sess.run(output, feed_dict={input:input, weights:weightsB}) #inference
Run Code Online (Sandbox Code Playgroud)

我的问题是:如果我输入weightsB值,它们会永久覆盖网络的值吗?如果下次我会跑

sess.run(output, feed_dict={input:input}) #inference
Run Code Online (Sandbox Code Playgroud)

使用权重A还是权重B?

mrr*_*rry 5

在TensorFlow中,一步输入变量值不会值影响存储在该变量中的值。在后续步骤中,如果使用变量,它将继续使用其先前的值。

请注意,如果您希望供稿在以后的步骤中更改变量的值,则应使用类似以下的结构值显式分配给变量:

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: ...})
Run Code Online (Sandbox Code Playgroud)