Каковы причины использования MonitoredTrainingSession и Estimator в TensorFlow? - PullRequest
1 голос
/ 20 марта 2019

Я вижу много примеров с MonitoredTrainingSession или tf.Estimator в качестве обучающей среды. Однако не ясно, почему я использовал бы один над другим. Оба настраиваются с SessionRunHooks. Оба интегрируются с tf.data.Dataset итераторами и могут кормить наборы данных обучения / val. Я не уверен, какие преимущества получит одна установка.

1 Ответ

0 голосов
/ 20 марта 2019

Короткий ответ: MonitoredTrainingSession позволяет пользователю получить доступ к объектам Graph и Session, а также к циклу обучения, а Estimator скрывает детали графиков и сеансов от пользователя и, как правило, облегчает проведение обучения, особенно, с train_and_evaluate, если вам нужно периодически оценивать.

MonitoredTrainingSession отличается от обычного tf.Session () тем, что он обрабатывает инициализацию переменных, настраивает средства записи файлов, а также включает функции для распределенного обучения.

Estimator API, с другой стороны, является высокоуровневой конструкцией, такой же как Keras. Возможно, он используется меньше в примерах, потому что был представлен позже Он также позволяет распределять обучение / оценку с помощью DistibutedStrategy и имеет несколько стандартных оценок, которые позволяют быстро создавать прототипы.

С точки зрения определения модели они довольно одинаковы, оба позволяют использовать либо keras.layers, либо определять полностью пользовательскую модель с нуля. Поэтому, если по какой-либо причине вам нужен доступ к построению графика или настроить цикл обучения, используйте MonitoredTrainingSession. Если вы просто хотите определить модель, обучить ее, запустить проверку и прогнозирование без дополнительной сложности и стандартного кода, используйте Estimator

...