Короткий ответ: MonitoredTrainingSession
позволяет пользователю получить доступ к объектам Graph и Session, а также к циклу обучения, а Estimator
скрывает детали графиков и сеансов от пользователя и, как правило, облегчает проведение обучения, особенно, с train_and_evaluate
, если вам нужно периодически оценивать.
MonitoredTrainingSession
отличается от обычного tf.Session () тем, что он обрабатывает инициализацию переменных, настраивает средства записи файлов, а также включает функции для распределенного обучения.
Estimator API
, с другой стороны, является высокоуровневой конструкцией, такой же как Keras
. Возможно, он используется меньше в примерах, потому что был представлен позже Он также позволяет распределять обучение / оценку с помощью DistibutedStrategy
и имеет несколько стандартных оценок, которые позволяют быстро создавать прототипы.
С точки зрения определения модели они довольно одинаковы, оба позволяют использовать либо keras.layers
, либо определять полностью пользовательскую модель с нуля. Поэтому, если по какой-либо причине вам нужен доступ к построению графика или настроить цикл обучения, используйте MonitoredTrainingSession
. Если вы просто хотите определить модель, обучить ее, запустить проверку и прогнозирование без дополнительной сложности и стандартного кода, используйте Estimator