TensorFlow: информация / переменная, запоминаемая между сеансами.run ()?

Я изучаю 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 ()?

Так как бы определялся сеанс ()? И все ли вычисляется в одном и том же сеансе, запоминается через каждый прогон (), пока сеанс() не закончится ? Спасибо!

1 ответ

  1. При запуске оптимизатора он настраивает параметры, чтобы минимизировать функцию потерь. Когда вы запускаете его несколько раз, он продолжает регулировать параметры с течением времени — ни один из параметров не сбрасывается.

    Вы можете проверить это, используя sess.runодну из ваших переменных веса после каждого запуска оптимизатора.