Тензор потока оценщик много звонков, чтобы тренироваться с Адамом - PullRequest
0 голосов
/ 05 декабря 2018

Я использую пользовательский оценщик tenorflow с AdamOptimizer, поэтому мой model_fn выглядит следующим образом:

def model_fn(features, labels, mode, params):
  ...
  loss = ...
  train_op = tf.train.AdamOptimizer(params['learning_rate']).minimize(loss, tf.train.get_global_step())
  if mode == tf.estimator.ModeKeys.TRAIN:
    return tf.estimator.EstimatorSpec(mode, loss=loss, train_op=train_op)
  elif mode == tf.estimator.ModeKeys.EVAL:
    return tf.estimator.EstimatorSpec(mode, loss=loss)
  elif mode == tf.estimator.ModeKeys.PREDICT:
    return tf.estimator.EstimatorSpec(mode, predictions=predictions)

Я хочу реализовать механизм ранней остановки.Чтобы упростить, я делаю следующее:

for epoch in range(1000):
  model.train(input_fn=input_fn, steps=self.steps_by_epoch)
  loss = model.evaluate(input_fn=eval_input_fn)['loss']
  if loss < 0.001:
    break

Так что model.train будет вызываться в цикле, и будет делать эпоху данных при каждом вызове.

Мой вопрос:Скорость обучения в AdamOptimizer (и многих других оптимизаторах) - это переменная состояния, которая должна эволюционировать во время минимизации.Будет ли его значение сохраняться между двумя вызовами model.train или будет повторно инициализироваться при каждом вызове?

И если последний, как я могу заставить Tensorflow запомнить эту переменную между двумя вызовами model.train

1 Ответ

0 голосов
/ 21 декабря 2018

После каждого вызова model.train() состояние модели будет сохраняться в контрольной точке.Поскольку все параметры, используемые в оптимизаторе Адама, также являются переменными графика тензорного потока, они также будут сохранены в контрольной точке и, следовательно, будут извлечены для следующего вызова model.train().

Также вам следует обратить внимание на tf.estimator.train_and_evaluate (https://www.tensorflow.org/api_docs/python/tf/estimator/train_and_evaluate).

Это автоматически выполнит оценку при сохранении контрольной точки. Вы можете контролировать контрольную точку и частоту оценки, используя спецификации.

...