【问题标题】:Caffe vs Theano MNIST exampleCaffe 与 Theano MNIST 示例
【发布时间】:2016-02-16 07:19:24
【问题描述】:

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

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

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

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

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

但是,在 Theano 上,它要差得多。我花了超过 46 分钟(使用相同的 GPU),才达到 92% 的测试性能。

我很困惑,因为在同一数据集上运行相对相同架构的框架之间应该没有太大区别。

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

谢谢。

【问题讨论】:

  • 除了我在下面写的内容之外,您是否检查过您的 GPU 是否实际用于 Theano 代码?如果您还没有,可以尝试在此处运行此代码进行检查:deeplearning.net/software/theano/tutorial/using_gpu.html 我记得使用 Theano 比使用 Caffe 更棘手。
  • @Chrigi:是的,我检查了一下,它在 GPU 中运行,因此性能差异让我感到惊讶。

标签: theano deep-learning convolution caffe mnist


【解决方案1】:

Theano 和 Caffe 的示例不是完全相同的网络。我能想到的两个关键区别是 Theano 示例使用 sigmoid/tanh 激活函数,而 Caffe 教程使用 ReLU 激活函数,Theano 代码使用普通 minibatch gradient descent 而 Caffe 使用 momentum optimiser。这两种差异都会显着影响网络的训练时间。并且使用 ReLU 单元也可能会影响准确性。

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

您提到的 Theano 教程是了解卷积和其他神经网络在基本层面上如何工作的绝佳资源。但是,实施所有最先进的调整会很麻烦。如果您想快速获得最先进的结果,最好使用现有的深度学习框架之一。除了 Caffe,还有很多基于 Theano 的框架。我知道kerasblockspylearn2,还有我个人最喜欢的lasagne

【讨论】:

  • 谢谢,但我对激活函数有一个担忧:所以在 Caffe 示例中,卷积层中的神经元只是权重之和 * 前一层输出(在内核窗口中),没有对 sum 应用 sigmoid/tanh 函数?
  • @hosyvietanh Caffe 正在使用 ReLU 激活,因此它正在执行类似于 max(0, Wx+b) 的操作,其中 x 是层的输入,而 Theano 示例正在执行 sigmoid(Wx+ b).
  • 老实说,我对 Caffe LeNet 示例中的 conv 层之后没有 ReLU 激活感到有些困惑。每个卷积层都应该跟随一些激活函数。在最初的 LeNet 论文中,它是 tanh 函数。在其他 Caffe 示例中,他们还通过激活函数跟进 conv 层,例如,您可以看到他们在 Imagenet example 中的每个 conv 层之后放置了 ReLU。我建议您将此作为一个新问题发布。
  • @Chrigi:是的,我也感到非常困惑。如果您有兴趣,我在这里发布了另一个问题:stackoverflow.com/questions/35533703/…
猜你喜欢
  • 1970-01-01
  • 2016-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-13
  • 2015-05-06
  • 2015-11-15
相关资源
最近更新 更多