为什么要使用纯TensorFlow而不是Keras?

byt*_*yt3 3 deep-learning keras tensorflow

最近我正在观看TensorFlow的介绍,在那个过程中,Keras成为了一个高级API,可以在后端使用TensorFlow或Theano.

我和他们两个玩了一遍,用第一个纯TensorFlow做了MNIST LeNet-5实现,之后用Keras做了.至少在我的机器上,当直接使用TensorFlow时,我无法看到任何显着的性能提升.

所以现在我的问题是:直接使用TensorFlow比Keras有什么好处?也许这是一个规模问题,我是否会看到大规模项目的性能显着提升?

nes*_*uno 6

Keras只是隐藏了Tensorflow(以及其他后端)的复杂性,这就是全部.

如果您需要/想要更好地控制幕后发生的事情,您可以直接使用Tensorflow(您可以控制几乎所有内容,并且您可以确保您的实现有效地执行您想要的操作).

如果您只是想快速制作原型并开发模型,那么Keras很好,因为它可以更快地完成.权衡的是你放松了一点控制权,因为Keras为你做了很多你不会做的事情.例如,你不能改变卷积层的变量名称/范围,因为它们在keras层定义中是固定的(内核总是'内核',偏差总是'偏差').

但是,由于Tensorflow首先构建一个图形然后执行它,因此Keras或Tensorflow中定义的相同图形的执行速度是相同的(Keras只减慢图形结构,这只是Python代码).

更新:来自Tensorflow 2.0,默认使用tf.keras:https://pgaleone.eu/tensorflow/gan/2018/11/04/tensorflow-2-models-migration-and-new-design/