【问题标题】:Tensorflow: API recommendation for convolutional neural net? [closed]Tensorflow:卷积神经网络的 API 推荐? [关闭]
【发布时间】:2017-07-20 15:09:03
【问题描述】:

我最近一直在研究使用 TensorFlow 创建自定义 CNN,并一直在尝试使用 tutorials 来深入了解设计、训练和部署图像分类网络的最直接方法。


让我印象深刻的两种方法是:

TF Layers API:这个 API 似乎提供了最直接、最直观的方式来逐层定义网络。也就是说,他们训练和评估模型的方式使用tf.learn.Estimator 类,这似乎有点限制,因为网络是使用Estimatorfit() 方法进行严格训练并使用evaluate() 方法进行验证的.本教程甚至没有使用tf.Session

Low-level API:定义网络似乎有点乏味。此外,训练和部署以非常手动的方式完成,但似乎提供了更多控制。

对于希望实现和训练相对基本的 CNN 并希望能够修补网络架构和基本超参数调整的 TensorFlow 新手,最适合熟悉的 API 是什么?

此外,如果有任何有用的教程或示例使用您的首选界面,将不胜感激。

【问题讨论】:

  • 要求我们推荐或查找书籍、工具、软件库、教程或其他场外资源的问题对于 Stack Overflow 来说是题外话,因为它们往往会吸引固执己见的人答案和垃圾邮件。这可以通过下面显示的各种答案清楚地观察到。

标签: python machine-learning tensorflow neural-network conv-neural-network


【解决方案1】:

Keras 是一个不错的 Tensorflow 前端。听起来它应该适合您的需求。这是example 有人用 Keras 训练 CNN。

【讨论】:

    【解决方案2】:

    我喜欢this page 上的描述:“手工”编写你的东西,但给模型一个对外透明的类接口。 TF 图的东西在构造时作为属性处理并设置,然后无需了解 TF 即可使用模型。有点像 Keras,但让你完全控制(并迫使你学习低级)。但是,它缺乏 Keras 的可组合性。

    基本上,它建议您按照以下方式进行操作:

    class Model:
        @lazy_property
        def prediction(self):
            ...
    
        @lazy_property
        def optimize(self):
            # actual TF stuff here, e.g.:
            cross_entropy = -tf.reduce_sum(self.target, tf.log(self.prediction))
            optimizer = tf.train.RMSPropOptimizer(0.03)
            return optimizer.minimize(cross_entropy)
    
        @lazy_property
        def error(self):
            ...
    

    如果您对它感兴趣,我尝试将这种方法与通用基类和装饰器 here 打包在一起。我试图坚持使用 Keras API,会话是 explicitly handledwiths。然而,该代码实际上并未用于培训——我只是在厌倦了在多个大学项目中重复所有内容并想要产生更清洁的东西后才编写它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 2019-08-18
      • 2020-10-19
      • 2017-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多