Я изучаю TensorFlow из примера по адресу: https://github.com/aymericdamien/TensorFlow-Examples/blob/master/notebooks/2_BasicModels/linear_regression.ipynb
В следующем коде, на этапе обучения, каждая сессия.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.run (), он сохраняет результаты оптимизатора из предыдущего сеанса.run ()?
Так как бы определялся сеанс ()? И все ли вычисляется в одном и том же сеансе, запоминается через каждый прогон (), пока сеанс() не закончится ? Спасибо!
При запуске оптимизатора он настраивает параметры, чтобы минимизировать функцию потерь. Когда вы запускаете его несколько раз, он продолжает регулировать параметры с течением времени — ни один из параметров не сбрасывается.
Вы можете проверить это, используя
sess.run
одну из ваших переменных веса после каждого запуска оптимизатора.