Подтвердить что ты не робот

Каков наилучший язык программирования для внедрения нейронных сетей?

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

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

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

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

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

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

Ответ 4

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

Ответ 5

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

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

Ответ 6

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

Ответ 7

Зачем изобретать колесо? Попробуйте PyBrain. Он бесплатный и очень всеобъемлющий:

Ответ 8

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

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

Ответ 10

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