在TensorFlow中使用MonitoredTrainingSession vs Estimator的原因是什么

时间:2019-03-20 01:46:15

标签: python tensorflow machine-learning tensorflow-estimator

我看到许多以MonitoredTrainingSessiontf.Estimator作为训练框架的例子。但是,不清楚为什么我要使用另一个。两者都可以使用SessionRunHooks进行配置。两者都与tf.data.Dataset迭代器集成,并且可以提供训练/验证数据集。我不确定一种设置的好处是什么。

1 个答案:

答案 0 :(得分:0)

简短的回答是,MonitoredTrainingSession允许用户访问Graph和Session对象以及训练循环,而Estimator则向用户隐藏了图形和会话的详细信息,通常使运行起来更容易培训,尤其是如果需要定期评估的话,请参加train_and_evaluate培训。

MonitoredTrainingSession与普通的tf.Session()的不同之处在于,它处理变量的初始化,设置文件编写器以及合并分布式培训的功能。

另一方面,

Estimator API是高级结构,就像Keras一样。在示例中可能较少使用它,因为它是稍后介绍的。它还允许使用DistibutedStrategy分发训练/评估,并且它具有多个固定估计器,可以快速进行原型制作。

就模型定义而言,它们相当相等,都允许使用keras.layers,也可以从头开始定义完全自定义的模型。因此,如果出于任何原因需要访问图形构造或自定义训练循环,请使用MonitoredTrainingSession。如果您只想定义模型,进行训练,运行验证和预测而又不增加复杂性和样板代码,请使用Estimator