Ответ 1
Основная идея
В наши дни глубокое углубленное изучение проблем классификации изображений (например, ImageNet) обычно представляет собой "глубокие сверточные нейронные сети" "(Deep ConvNets). Они выглядят примерно так, как эта конфигурация ConvNet: Крижевский и др.:
Для вывода (классификации) вы загружаете изображение в левую сторону (обратите внимание, что глубина на левой стороне равна 3, для RGB), хруст через ряд фильтров свертки и он выплескивает 1000-мерный вектор с правой стороны. Эта картинка особенно подходит для ImageNet, которая фокусируется на классификации 1000 категорий изображений, поэтому 1000d-вектор - это "оценка того, насколько вероятно, что это изображение соответствует категории".
Обучение нейронная сеть лишь немного сложнее. Для обучения вы в основном выполняете классификацию повторно, и каждый раз вы часто делаете backpropagation (см. Лекции Andrew Ng), чтобы улучшить фильтры свертки в сети. В основном, backpropagation спрашивает: "Что правильно классифицировало сеть/неправильно? Для ошибочно классифицированных материалов, немного исправьте сеть".
Реализация
Caffe - это очень быстрая реализация с открытым исходным кодом (быстрее, чем cuda-convnet от Крижевского и др.) глубоких сверточных нейронных сетей. Код Caffe довольно легко читается; там в основном один файл С++ для типа сетевого уровня (например, сверточные слои, слои с максимальным пулом и т.д.).