Какой лучший язык программирования для реализации нейронных сетей? - PullRequest
18 голосов
/ 01 июля 2011

Я не ищу библиотеку нейронных сетей, так как я создаю новые виды сетей. Для этого мне нужен хороший язык «потока данных».

Конечно, вы можете сделать это на C, C ++, Java и co. но работа с нуля с многопоточностью и т. д. была бы кошмаром.

С другой стороны, языки вроде Oz или Erlang кажутся более адаптированными, но в них не так много библиотек, и их сложнее освоить (с ними легко играть, но нормально ли создавать полноценное программное обеспечение?) .

Что бы вы предложили?

Ответы [ 10 ]

15 голосов
/ 01 июля 2011

Я смотрел интересную презентацию на конференции об использовании Erlang для нейронных сетей. Вы можете проверить это:

От телекоммуникационных сетей к нейронным сетям; Erlang, как непреднамеренный язык программирования нейронных сетей

Я также знаю, что представленная система будет доступна с открытым исходным кодом в любой день, согласно авторам в твиттере .

10 голосов
/ 03 июля 2011

Эрланг очень хорошо подходит для NN.

  1. Нейроны могут моделироваться процессами (нет проблем с миллионами из них)
  2. Соединения / синапсы могут быть представлены PID целевого нейрона. Очень легко инициализировать такую ​​сеть как часть стандартной процедуры инициализации в OTP. Связь будет осуществляться путем передачи сообщений.
  3. Может быть, было бы хорошо иметь глобальное адресное пространство в ETS / mnesia (встроенные хранилища данных) для динамической реконфигурации структуры сети.
  4. Сопоставление с образцом в блоке приема может определить, какой тип нейрона получает сигнал, и изменить его на лету.
  5. Было бы очень легко контролировать такую ​​сеть.

Также учтите, что Erlang NN будет «живым» все время. Вы сможете запросить нейроны, слои, маршрутизаторы и т. Д. В любое время. В C / C ++ вы просто читаете текущее состояние массивов / структуры данных.

Что касается производительности, мы все знаем, что C / C ++ на несколько порядков быстрее, чем Erlang, Однако тема NN хитрая.

Если в сети будет очень мало нейронов, в очень широком адресном пространстве, в обычном массиве, повторение снова и снова может быть дорогостоящим (в C). Эквивалентная ситуация в Erlang была бы решена с помощью одного запроса к нейронам root / root (входной слой), который передавал бы запрос непосредственно хорошо адресованным соседям.

6 голосов
/ 29 июня 2013

DXNN1 и DXNN2, которые были созданы и введены в учебник: Справочник по нейроэволюции через Эрланг: http://www.amazon.com/Handbook-Neuroevolution-Through-Erlang-Gene/dp/1461444624/ref=zg_bs_760204_22

С открытым исходным кодом и доступны по адресу: https://github.com/CorticalComputer

3 голосов
/ 17 декабря 2012

Если вы заинтересованы в программировании потока данных и многопоточности, я бы предложил National Instruments LabVIEW.В этом случае вам не нужно беспокоиться о многопоточности, поскольку она уже есть, и вы также можете использовать ООП, поскольку теперь ООП также является родным для LabVIEW.LabVIEW OOP также основывается исключительно на парадигме программирования потока данных.

2 голосов
/ 07 июля 2011

Если у вас есть опыт работы с Java, используйте Scala, язык JVM, основанный на той же концепции «актеров», что и Erlang. Но он менее строг, чем Erlang, и может легко использовать любые существующие библиотеки Java.

Затем, когда вы найдете вычислительно дорогую задачу, которая будет лучше работать в Erlang, вы можете использовать библиотеку jinterface Erlang для связи между вашим кодом Scala и вашими распределенными узлами Erlang.

1 голос
/ 27 декабря 2011

Использование Java не означает работу с нуля с многопоточностью - просто используйте одну из многочисленных библиотек Java Actor.

0 голосов
/ 06 июля 2017

Все зависит от вашего приложения.C ++, Python - хорошие языки программирования для машинного обучения

0 голосов
/ 09 августа 2015

Еще один большой плюс для Erlang - полная интеграция с Drakon

http://drakon -editor.sourceforge.net / drakon-erlang / intro.html

0 голосов
/ 01 июля 2011

Это не сам по себе язык, но Emergent очень мощный и может быть сильно настроен (он имеет полный язык сценариев).

Это тоже открытый исходный код, который может быть полезен в качестве руководства, если вам нужно создать собственную версию для ваших новых архитектур.

0 голосов
/ 01 июля 2011

Зачем изобретать велосипед? Попробуйте PyBrain . Это бесплатно и очень полно:

...