我看到许多以MonitoredTrainingSession
或tf.Estimator
作为训练框架的例子。但是,不清楚为什么我要使用另一个。两者都可以使用SessionRunHooks
进行配置。两者都与tf.data.Dataset
迭代器集成,并且可以提供训练/验证数据集。我不确定一种设置的好处是什么。
答案 0 :(得分:0)
简短的回答是,MonitoredTrainingSession
允许用户访问Graph和Session对象以及训练循环,而Estimator
则向用户隐藏了图形和会话的详细信息,通常使运行起来更容易培训,尤其是如果需要定期评估的话,请参加train_and_evaluate
培训。
MonitoredTrainingSession
与普通的tf.Session()的不同之处在于,它处理变量的初始化,设置文件编写器以及合并分布式培训的功能。
Estimator API
是高级结构,就像Keras
一样。在示例中可能较少使用它,因为它是稍后介绍的。它还允许使用DistibutedStrategy
分发训练/评估,并且它具有多个固定估计器,可以快速进行原型制作。
就模型定义而言,它们相当相等,都允许使用keras.layers
,也可以从头开始定义完全自定义的模型。因此,如果出于任何原因需要访问图形构造或自定义训练循环,请使用MonitoredTrainingSession
。如果您只想定义模型,进行训练,运行验证和预测而又不增加复杂性和样板代码,请使用Estimator