【发布时间】:2016-12-28 23:35:30
【问题描述】:
我正在通过以下示例学习 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() 呢?并且是否通过每次 run() 记住同一会话中计算的所有内容,直到 session() 结束?谢谢!
【问题讨论】:
标签: python-3.x tensorflow