TensorFlow:每个session.run()之间记住的信息/变量?

时间:2016-12-28 23:35:31

标签: python-3.x tensorflow

我正在通过以下示例学习TensorFlow:https://github.com/aymericdamien/TensorFlow-Examples/blob/master/notebooks/2_BasicModels/linear_regression.ipynb

在下面的代码中,在训练阶段,每个sess.run()都在一个数据点中输入。

# Mean squared error
cost = tf.reduce_sum(tf.pow(pred-Y, 2))/(2*n_samples)
# Gradient descent
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)
  :
  :
with tf.Session() as sess:
    sess.run(init)

    # Fit all training data
    for epoch in range(training_epochs):
        for (x, y) in zip(train_X, train_Y):
            sess.run(optimizer, feed_dict={X: x, Y: y})
   :

根据优化器的定义,它试图最小化成本。对于成本函数J(r),优化器应使用以下函数更新成本函数的参数r。

r := r - alpha* dJ(r)/dr其中alpha是学习率

对于每个输入的数据点,它将更新参数r一次,这意味着优化器会记住先前输入的结果。

这是否意味着TensorFlow session.run(),它确实存储了前一个session.run()的优化器结果?

那么session()如何定义?是通过每次运行()记住在同一会话中计算的所有内容,直到session()结束?谢谢!

1 个答案:

答案 0 :(得分:0)

运行优化程序时,它会调整参数以最小化损失函数。当你多次运行它时,它会不断调整参数 - 没有任何参数被重置。

每次运行优化程序后,您可以在其中一个权重变量上使用sess.run来验证这一点。