Python TensorFlow:评估和推断之间的差异

Python TensorFlow:评估和推断之间的差异,python,tensorflow,neural-network,conv-neural-network,Python,Tensorflow,Neural Network,Conv Neural Network,tf.contrib.learn.ModeKeys.EVAL和tf.contrib.learn.ModeKeys.expert之间有什么区别 另外,如何将它们与tf.contrib.learn.Estimator类对象一起使用 我正试图学习本教程:,我正在努力理解每种“模式”的用途 API文档:似乎EVAL与推断的不同之处在于,EVAL是在训练期间评估模型时使用的模式,而推断是在模型已经训练且纯粹用于预测时使用的模式。例如,在链接的教程中,当模型用于评估或训练模式,但不用于推断模式时,损失函数o

tf.contrib.learn.ModeKeys.EVAL
tf.contrib.learn.ModeKeys.expert
之间有什么区别

另外,如何将它们与
tf.contrib.learn.Estimator
类对象一起使用

我正试图学习本教程:,我正在努力理解每种“模式”的用途


API文档:

似乎EVAL与推断的不同之处在于,EVAL是在训练期间评估模型时使用的模式,而推断是在模型已经训练且纯粹用于预测时使用的模式。例如,在链接的教程中,当模型用于评估或训练模式,但不用于推断模式时,损失函数op包含在图形中。因为在进行培训进度评估(评估模式)时,知道损失函数的值是有用的,但当您纯粹对生成预测(推断模式)感兴趣时,您不需要它。

这就是我的想法,然而,我看到的大多数教程似乎将培训/评估分为不同的模式(甚至不同的脚本)。这对我来说没有意义,因为似乎验证/评估步骤应该在培训步骤中迭代进行,作为在培训期间跟踪进度的一种方式,而不是在培训后评估绩效。如果是这种情况,验证和测试基本上是做同一件事。那么,培训和验证做不同的事情,使用不同的数据,所以在tensorflow图中,它们是单独的操作。例如,如果您使用dropout或dropconnect,您可能希望在进行评估或推理时将其关闭,但在进行培训时将其打开。