更改Tensorflow中的变量值并评估成本函数

时间:2017-04-06 08:23:27

标签: machine-learning tensorflow deep-learning theano

我需要能够绘制例如成本函数值作为某个参数的函数(例如下面的偏差b)。如果是我的图形就像(伪代码)

y = g(W x + b),
cost = sum(y ** 2),

其中Wbtf.Variables,我希望将b更改为0,更改为1并绘制{{1}的值}。

请注意,我不想在每次更改cost后调用eval或sesssion.run,因为开销很大!例如。 100个情节点,将永远。

  • 我知道b的存在,但做了[分配,成本,分配,成本......]和评估似乎没有工作的事情
  • 我想我可以在图表中更新tf.assign的值,并在每次更新后调用费用,但我不想更改图表

那我怎么能以有效的方式做到这一点呢?提前谢谢!

编辑:实际上,如果不在迭代之间调用eval / run,这可能是不可能的......哦,好吧......

2 个答案:

答案 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`....