Пример Caffe vs Theano MNIST

Я пытаюсь изучить (и сравнить) различные фреймворки глубокого обучения, к тому времени это Caffe и Theano.

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

и

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

Я следую руководству по запуску этих фреймворков в наборе данных MNIST. Тем не менее, я замечаю значительную разницу в точности и производительности.

Для Caffe очень быстро точность достигает ~ 97%. Фактически, для завершения программы (с использованием графического процессора) требуется всего 5 минут, а окончательная точность на тестовом наборе превышает 99%. Как впечатляет!

Однако на Theano все гораздо беднее. Мне потребовалось более 46 минут (с использованием того же графического процессора), чтобы достичь производительности теста 92%.

Я сбит с толку, поскольку не должно быть такой большой разницы между фреймворками, работающими с относительно одинаковыми архитектурами в одном и том же наборе данных.

Итак, мой вопрос. Является ли число точности, о котором сообщает Caffe, процентом правильного прогноза на тестовом наборе? Если да, то есть ли какое-либо объяснение этому расхождению?

Спасибо.


person hosyvietanh    schedule 16.02.2016    source источник
comment
В дополнение к тому, что я написал ниже, вы проверили, действительно ли ваш GPU используется для кода Theano? Если вы еще этого не сделали, попробуйте запустить этот код для проверки: deeplearning.net/ software/theano/tutorial/using_gpu.html Я помню, что с Theano было сложнее, чем с Caffe.   -  person Chrigi    schedule 16.02.2016
comment
@Chrigi: Да, я проверяю, и он работает на графическом процессоре, поэтому меня удивила разница в производительности.   -  person hosyvietanh    schedule 16.02.2016


Ответы (1)


Примеры для Theano и Caffe — это не совсем одна и та же сеть. Два ключевых отличия, о которых я могу думать, заключаются в том, что пример Theano использует функции активации sigmoid/tanh, а учебник Caffe использует ReLU. и что код Theano использует обычный мини-пакетный градиентный спуск, а Caffe использует оптимизатор импульса. Оба отличия существенно повлияют на время обучения вашей сети. И использование модуля ReLU, вероятно, также повлияет на точность.

Обратите внимание, что Caffe — это среда глубокого обучения, в которой уже есть готовые функции для многих часто используемых вещей, таких как оптимизатор импульса. Theano, с другой стороны, представляет собой символическую математическую библиотеку, которую можно использовать для построения нейронных сетей. Однако это не фреймворк для глубокого обучения.

Упомянутый вами учебник Theano — отличный ресурс для понимания того, как именно сверточные и другие нейронные сети работают на базовом уровне. Тем не менее, реализовать все современные настройки будет обременительно. Если вы хотите быстро получить самые современные результаты, вам лучше использовать одну из существующих сред глубокого обучения. Помимо Caffe, существует ряд фреймворков, основанных на Theano. Мне известны keras, блоки , pylearn2 и мой личный фаворит лазанья.

person Chrigi    schedule 16.02.2016
comment
Спасибо, но у меня есть одно опасение по поводу функции активации: так, в примере с Caffe нейрон в сверточном слое представляет собой просто сумму веса * выход предыдущего слоя (в окне ядра), без применения сигмовидной/тангенциальной функции к сумме ? - person hosyvietanh; 16.02.2016
comment
@hosyvietanh Caffe использует активацию ReLU, поэтому он делает что-то вроде max (0, Wx + b), где x — это входные данные для слоя, где пример Theano делает sigmoid (Wx + b). - person Indie AI; 17.02.2016
comment
Честно говоря, я немного озадачен отсутствием активаций ReLU после конверсионных слоев в примере с Caffe LeNet. За каждым сверточным слоем обязательно должна следовать какая-то функция активации. В оригинальной статье LeNet это функция тангенса. В других примерах Caffe они также отслеживают уровни конверсии с помощью функций активации, например, вы можете видеть, что они помещают ReLU после каждого слоя конверсии в пример Imagenet. Я бы посоветовал вам опубликовать это как новый вопрос. - person Chrigi; 17.02.2016
comment
@Chrigi: Да, я тоже очень смущен. Я разместил еще один вопрос об этом здесь, если вам интересно: stackoverflow.com/questions/35533703/ - person hosyvietanh; 21.02.2016