Я использую нейронные сети для решения различных задач машинного обучения. Я использую Python и Pybrain, но эта библиотека почти прекращена. Есть ли другие хорошие альтернативы в Python?
machine-learning
python
neural-network
marcodena
источник
источник
Ответы:
ОБНОВЛЕНИЕ: ландшафт немного изменился с тех пор, как я ответил на этот вопрос в июле 14 года, и некоторые новые игроки вышли в космос. В частности, я бы порекомендовал проверить:
У каждого из них есть свои сильные и слабые стороны, так что дайте им всем понять, какой вариант лучше всего подходит для вашего случая использования. Хотя я бы порекомендовал использовать PyLearn2 год назад, сообщество больше не активно, поэтому я бы порекомендовал поискать в другом месте. Мой первоначальный ответ на ответ приведен ниже, но в данный момент он не имеет значения.
PyLearn2 обычно считается библиотекой выбора для нейронных сетей и глубокого обучения на python. Он предназначен для простого научного экспериментирования, а не для простоты использования, поэтому кривая обучения довольно крутая, но если вы не торопитесь и будете следовать учебным пособиям, я думаю, вы будете довольны функциональностью, которую он предоставляет. Предоставляется все: от стандартных многослойных персептронов до ограниченных машин Больцмана, сверточных сетей и автоэнкодеров. Есть отличная поддержка графических процессоров, и все построено на базе Theano, поэтому производительность, как правило, довольно хорошая. Исходный код PyLearn2 доступен на github .
Имейте в виду, что PyLearn2 в настоящий момент имеет противоположную проблему с PyBrain - вместо того, чтобы быть заброшенным, PyLearn2 находится в активной разработке и подвержен частым изменениям.
источник
Tensor Flow ( docs ) от Google - еще одна приятная структура, которая имеет автоматическое дифференцирование. Я записал несколько быстрых мыслей о Google Tensor Flow в своем блоге вместе с примером MNIST, который они приводят в своем уроке.
Смотрите также: Учебник My Tensorflow XOR
Лазанья ( документы ) очень хороша, так как использует theano (→ вы можете использовать графический процессор) и упрощает его использование. Насколько мне известно, автор лазаньи выиграл испытание в Kaggle Galaxy. Это хорошо с nolearn . Вот пример сети MNIST:
Caffe - это библиотека C ++, но имеет привязки Python. Вы можете сделать большинство вещей с помощью файлов конфигурации (prototxt). Он имеет много опций, а также может использовать графический процессор.
источник
Pylearn полагается на Theano и, как уже упоминалось в другом ответе, использовать библиотеку довольно сложно, пока вы не овладеете ею.
А пока я бы предложил использовать Theanets . Он также построен на вершине Theano, но с ним гораздо проще работать. Возможно, это правда, что он не обладает всеми функциями Pylearn, но для основной работы этого достаточно.
Также это с открытым исходным кодом, так что вы можете добавлять собственные сети на лету, если вы решитесь. :)
РЕДАКТИРОВАТЬ: декабрь 2015 года. Недавно я начал использовать Keras . Это немного ниже, чем Theanets, но гораздо более мощный. Для базовых тестов подходит Theanets. Но если вы хотите сделать некоторые исследования в области ANN Keras гораздо более гибким. Кроме того, Keras может использовать Tensorflow в качестве бэкэнда.
источник
TensorFlow (от Google, выпущен 2015-11-09) выглядит многообещающе.
FYI:
источник
Pylearn2, кажется, является предпочтительной библиотекой, однако я нахожу их файлы конфигурации YAML неуместными.
Сам Python был разработан, чтобы быть простым языком для прототипирования, почему бы вам не использовать его для определения самих свойств сети? У нас есть отличные редакторы с автозаполнением, которые сделают вашу жизнь намного проще, и Python не похож на C ++, где вам приходится ждать завершения длинных сборок, прежде чем вы сможете запустить свой код.
С другой стороны, файлы YAML нужно редактировать с помощью стандартного текстового редактора без какой-либо помощи, и это делает кривую обучения еще круче.
Возможно, мне не хватает общей картины, но я все еще не понимаю, о чем они думают, я не думаю, что прототипирование в коде будет намного медленнее. По этой причине я рассматриваю Theanets или использую Theano напрямую.
источник
Мне нравятся блоки , которые также построены на вершине Theano. Это более доступно, чем PyLearn2, и более функционально, чем Lasagne. Аккуратно написано тоже.
Обновлено января 2016 года:
На момент написания, Keras на сегодняшний день имеет наибольшую динамику. Он очень модульный и может работать как на Theano, так и на Tensorflow, предоставляя ему большие возможности.
источник
MXNet :
источник
Из того, что я слышал, Pylearn2 может быть библиотекой выбора для большинства людей. Это напоминает мне о недавнем сообщении в блоге несколько месяцев назад, в котором перечислены все различные библиотеки машинного обучения с кратким объяснением
https://www.cbinsights.com/blog/python-tools-machine-learning
Здесь вас может заинтересовать раздел «Глубокое обучение». Про Pylearn2 он пишет
источник
Я написал этот пост, детализируя некоторые из моих личных фаворитов:
Лучшие библиотеки машинного обучения в Python
Поскольку упомянуто более 30 различных библиотек, я не буду публиковать их все здесь, но они являются одними из самых популярных:
(Извините, я не могу связываться с репозиториями Github, так как мой представитель все еще <10 ...)Изменить: Добавлены ссылки на репозитории Github.
источник
неон :
источник
Просто чтобы добавить еще ресурсы. Недавно появилась статья, в которой рассматриваются различия между несколькими пакетами нейронных сетей и глубоких нейронных сетей.
Здесь вы можете найти информацию . Похоже, что Torch и TensorFlow являются победителями.
Примечание: не все они в Python. Тем не менее, я разместил его, чтобы открыть обсуждение.
источник
Microsoft Cognition Toolkit (ранее известный как CNTK) имеет API-интерфейс Python . Среди прочего, он должен быть хорош для мульти-GPU :
Примеры и учебные пособия можно найти по адресу https://github.com/Microsoft/CNTK/tree/master/bindings/python.
источник
DyNet: динамический инструментарий нейронной сети. С 1}:
Ранее он был известен как cnn (чья привязка к python называлась pycnn).
Рекомендации:
источник
Я рекомендую вам использовать tenorflow, который находится в стадии разработки и поддерживает глубокое изучение. Вы можете использовать высокоуровневые нейронные сети API Keras , который работает поверх tensorflow и очень просто в использовании, просто попробовать учебник , и вы будете любить его.
источник
PyTorch
Он получает большую поддержку благодаря простоте использования и сходству с базовым Python.
Он работает «построчно» (через динамические графики), как обычный Python, и может быть легко отлажен - даже с использованием стандартных операторов печати. Он также очень хорошо интегрируется с NumPy и другими известными библиотеками Python, такими как Scikit Learn.
Поскольку это упрощает моделирование, оно отлично подходит для создания прототипов и изучения новых идей в целом.
Он поддерживает несколько графических процессоров и делает это действительно простым способом.
Проверьте больше возможностей здесь .
Хотя многие из вышеперечисленных преимуществ делают PyTorch гораздо более приятным в использовании, чем другие широко используемые библиотеки, стоит отметить, что в предстоящем основном выпуске Tensorflow по умолчанию также будет использоваться динамическое создание графиков (также известный как режим нетерпеливого режима ). Это сделает его сопоставимым с использованием PyTorch.
источник
Если вы заинтересованы в сравнениях производительности, Soumith Чинтал поддерживает набор convnet тестов , которые охватывают некоторые из уже упомянутых структур питона ( TensorFlow , Chainer , неон , Theano ):
источник
NeuPy - это библиотека Python для искусственных нейронных сетей. NeuPy поддерживает множество различных типов нейронных сетей от простого персептрона до моделей глубокого обучения.
источник