Caffe 与 Theano MNIST 示例

Caffe vs Theano MNIST example

我正在尝试学习(和比较)不同的深度学习框架,当时它们是 Caffe 和 Theano。

http://caffe.berkeleyvision.org/gathered/examples/mnist.html

http://deeplearning.net/tutorial/lenet.html

我按照教程 运行 MNIST 数据集上的那些框架。但是,我注意到在准确性和性能方面存在很大差异。

对于 Caffe,准确率达到 ~97% 的速度非常快。事实上,只需要 5 分钟就可以完成程序(使用 GPU),最终在测试集上的准确率超过 99%。多么令人印象深刻!

然而,在 Theano 上,它就差多了。我花了 46 多分钟(使用相同的 GPU),才达到 92% 的测试性能。

我很困惑,因为在相同数据集上使用相对相同的体系结构 运行 框架之间不应该有太大差异。

所以我的问题是。 Caffe 报告的准确率是测试集上正确预测的百分比吗?如果是这样,对差异有什么解释吗?

谢谢。

Theano 和 Caffe 的示例不是完全相同的网络。我能想到的两个主要区别是 Theano 示例使用 sigmoid/tanh 激活函数,而 Caffe 教程使用 ReLU activation function, and that the Theano code uses normal minibatch gradient descent while Caffe uses a momentum optimiser。这两种差异都会显着影响网络的训练时间。使用 ReLU 单元也可能会影响准确性。

请注意,Caffe 是一个深度学习框架,它已经具有许多常用功能的现成功能,例如动量优化器。另一方面,Theano 是一个符号数学库,可用于构建神经网络。但是,它不是深度学习框架。

您提到的 Theano 教程是了解卷积网络和其他神经网络在基本层面上的工作原理的极好资源。然而,实施所有最先进的调整将很麻烦。如果您想快速获得最先进的结果,最好使用现有的深度学习框架之一。除了 Caffe,还有许多基于 Theano 的框架。我知道 keras, blocks, pylearn2, and my personal favourite lasagne