Ответ 1
Я смотрел интересную презентацию конференции об использовании Erlang для Neural Networks. Вы можете проверить это:
Я также знаю, что представленная система будет открыта в любой день в соответствии с авторами твит.
Я не ищу библиотеку Neural Networks, так как я создаю новые виды сетей. Для этого мне нужен хороший "поток данных".
Конечно, вы можете сделать это в C, С++, Java и co. но дело с нуля с многопоточным и т.д. было бы кошмаром.
На другой конечности такие языки, как Oz или Erlang, кажутся более адаптированными, но у них мало библиотек, и их сложнее освоить (с ними легко играть, но нормально ли создавать полноценное программное обеспечение?).
Что бы вы предложили?
Я смотрел интересную презентацию конференции об использовании Erlang для Neural Networks. Вы можете проверить это:
Я также знаю, что представленная система будет открыта в любой день в соответствии с авторами твит.
Erlang очень хорошо подходит для NN.
Также подумайте, что Erlang NN будет "жить" все время. Вы могли бы запросить нейроны, слои, маршрутизаторы и т.д. В любое время. В C/С++ вы просто читаете текущее состояние массивов/структуры данных.
Что касается производительности, мы все знаем, что C/С++ на порядок быстрее, чем Erlang, однако тема NN сложна.
Если сеть будет содержать очень мало нейронов, в очень широком адресном пространстве, в регулярном массиве, повторение этого снова и снова может быть дорогостоящим (в C). Эквивалентная ситуация в Erlang была бы решена путем одиночного запроса к корням/корням (входному слою) нейронов, которые распространяли бы запрос непосредственно хорошо адресованным соседям.
DXNN1 и DXNN2, который был встроен и введен в учебник: Справочник по нейроэволюции через Erlang: http://www.amazon.com/Handbook-Neuroevolution -Через-Эрланга-Gene/дп/1461444624/исх = zg_bs_760204_22
Доступны с открытым исходным кодом и доступны по адресу: https://github.com/CorticalComputer
Если вы заинтересованы в программировании потока данных и многопоточности, я бы предложил National Instruments LabVIEW. В этом случае вам не нужно беспокоиться о многопоточности с тех пор, как он уже существует, и вы также можете использовать ООП, поскольку теперь OOP также является родным с LabVIEW. LabVIEW OOP также основан исключительно на парадигме программирования потока данных.
Если у вас есть опыт Java, используйте Scala, который является языком JVM, который основан на той же концепции "актеров", что и у Erlang. Но он менее строг, чем Erlang, и может легко использовать любые существующие библиотеки Java.
Затем, когда вы найдете дорогостоящую задачу, которая будет работать лучше в Erlang, вы можете использовать библиотеку jinterface Erlang для связи между вашим кодом Scala и вашими распределенными узлами Erlang.
Использование Java не означает "с нуля" при многопоточности - просто используйте одну из многочисленных библиотек Java Actor.
Зачем изобретать колесо? Попробуйте PyBrain. Он бесплатный и очень всеобъемлющий:
Это не язык сам по себе, но Emergent очень мощный и может быть очень настроен (он имеет полный язык сценариев).
Это также открытый источник, который может быть полезен в качестве руководства, если вам нужно создать свою собственную версию для ваших новых архитектур.
Еще один большой плюс для Erlang - полная интеграция с Drakon
http://drakon-editor.sourceforge.net/drakon-erlang/intro.html
Все зависит от вашего приложения. С++, Python - некоторые хорошие языки программирования для машинного обучения.