#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