我最近一直在研究如何使用TensorFlow来创建一个定制的CNN,并且一直试图使用教程来洞察设计、训练和部署图像分类网络的最简单的方法。
在我看来,最突出的两种方法是:
TF层API:这个API似乎提供了一层一层地定义网络的最直接和直观的方法。尽管如此,他们训练和评估模型的方式使用了tf.learn.Estimator类,这似乎有点限制,因为网络使用Estimator的fit()方法进行严格的培训,使用evaluate()方法进行验证。本教程甚至不使用tf.Session。
低级API:定义一个网络似乎有点乏味。此外,培训和部署是以非常手动的方式进行的,但它似乎提供了更多的控制。
对于一个想要实现和培训相对基本的TensorFlow的新手,谁正在寻找修补网络体系结构和基本的超参数调优的能力,什么是最好的API熟悉?
此外,如果有任何有用的教程或示例使用您的首选界面,链接将是非常感谢的。
发布于 2017-07-20 15:11:28
对于Tensorflow来说,Keras是一个很好的前端。听起来应该符合你的需要。这是一个与Keras一起训练CNN的人的示例。
发布于 2017-07-20 15:31:18
我喜欢在此页上描述的东西:“用手”写你的东西,但是给模型一个透明的外部类接口。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):
...如果您感兴趣,我尝试用一个公共基类和装饰器这里封装该方法。我试着坚持使用Keras,会话是显式处理和with。然而,这些代码实际上并没有被用于培训--我只是在厌倦了在服务器式的大学项目中重复所有的东西,并想要产生更干净的东西之后才编写它。
https://stackoverflow.com/questions/45218674
复制相似问题