Каковы причины использовать MonitoredTrainingSession против Estimator в TensorFlow

#python #tensorflow #machine-learning #tensorflow-estimator

#python #tensorflow #машинное обучение #tensorflow-estimator

Вопрос:

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

Ответ №1:

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

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

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

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