我需要能够绘制例如成本函数值作为某个参数的函数(例如下面的偏差b
)。如果是我的图形就像(伪代码)
y = g(W x + b),
cost = sum(y ** 2),
其中W
和b
为tf.Variables
,我希望将b
更改为0,更改为1并绘制{{1}的值}。
请注意,我不想在每次更改cost
后调用eval或sesssion.run,因为开销很大!例如。 100个情节点,将永远。
b
的存在,但做了[分配,成本,分配,成本......]和评估似乎没有工作的事情tf.assign
的值,并在每次更新后调用费用,但我不想更改图表那我怎么能以有效的方式做到这一点呢?提前谢谢!
编辑:实际上,如果不在迭代之间调用eval / run,这可能是不可能的......哦,好吧......答案 0 :(得分:1)
在张量流中,如果使用变量,则只能在初始化后才能对它们进行求值。所以你不可能在没有会话的情况下评估它们。 但您可以按以下方式更改参数
import tensorflow as tf
my_var = tf.Variable(10)
with tf.Session() as sess:
sess.run(my_var.initializer)
print(sess.run(my_var.assign_sub(2))) #>> 8
print(sess.run(my_var.assign_sub(2))) #>> 6
答案 1 :(得分:1)
这听起来像是每个步骤中提供不同值的用例。假设b
是标量变量,您可以使用以下内容对循环进行编码:
import numpy as np
sess = tf.Session()
# Vary `b_val` from 0 to 1 in 100 steps.
for b_val in np.linspace(0, 1, 100):
# Evaluate `cost` using `b = b_val`.
cost_val = sess.run(cost, feed_dict={b: b_val})
# Do something with `cost_val`....