TFLearn,tf.contrib.learn还是tf.estimator?

时间:2017-12-02 09:50:36

标签: tensorflow tflearn tensorflow-estimator

我已经使用Tensorflow和TFLearn工作了几个月。我取得了一些进展。但是,我期待能够构建一个功能强大的scikit-learn类型Estimator作为TFLearn.DNN。我可以fit,我可以predict,但我不能进行交叉验证,因为evaluate对我失败了。 TensorFlow投掷:

  

ValueError:无法使用给定的会话来评估张量:张量图与会话图不同。

当我致电evaluate时。我认为TFLearn API的重点是从会话管理中抽象出代码。

我已经在几个论坛上询问了我与TFLearn有过的问题,包括项目的GitHub页面。不幸的是,我没有得到任何答案。

几天前,突然间我遇到了tf.contrib.learn命名空间。我看到这些课程和TFLearn之间有很多重叠。然后,我还找到了tf.estimator类。

最后,我刚才发现tensorflow.contrib子包是第三方贡献。这让我想知道原来的TFLearn是否只是被吸收到更大的TensorFlow包中。代码流向哪个方向?

我不关心我使用的内容,只要我获得了scikit-learn估算器对象的所有功能。

1 个答案:

答案 0 :(得分:0)

我认为最好使用TensorFlow的官方子模块,如tf.datatf.estimator。它们应该得到很好的维护,并且可以快速添加功能。

例如,@ mrry似乎负责tf.data,该模块非常干净,易于使用且与tf.estimator兼容。

模块tf.estimator稍微不那么明确,来自tf.contrib.learn。不要相信我,但我认为tf.estimator将慢慢取代tf.contrib.learn,它应该是TensorFlow的官方高级API(以及tf.keras)。

您可以在官方blog post中找到更多信息,其中介绍了所有模块之间的关系。

Organization of TensorFlow modules