我正在通过以下示例学习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()结束?谢谢!
答案 0 :(得分:0)
运行优化程序时,它会调整参数以最小化损失函数。当你多次运行它时,它会不断调整参数 - 没有任何参数被重置。
每次运行优化程序后,您可以在其中一个权重变量上使用sess.run
来验证这一点。