| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Алгоритмы > Программирование нейронных сетей |
| Автор: bncom 9.4.2010, 14:49 |
| Здравствуйте! Сразу изменяюсь за то, что, возможно, тему создал не там, где положено. Просто другого более подходящего раздела не нашел. И так, собственно вопрос: на каком языке программирования, скажем даже, моделирования, разрабатывать нейронную сеть? Слышал, что такие языки есть и существуют, но в поиске ничего такого не нашел. Да, можно делать на С++ и т.п., но меня интересуют более "глубокие" языки, ориентированные именно на создание нейронных сетей. Если кто знает такие, напиши пожалуйста. |
| Автор: VictorTsaregorodtsev 9.4.2010, 15:22 |
| Раздел правильный. Из спецязыков - NSL, например. Описан в книжке Weitzenfeld, Arbib, Alexander "The Neural Simulation Language - a system for brain modeling" 2002 года издания. Книга эта в инете где-то была. В книге есть ссылки на сайты с какими-то инструментами/программами, поддерживающими этот язык (но дожили ли эти сайты до сегодняшнего дня и будут ли работать те проги в Висте и Вин7 - не знаю). Язык этот ни в коем случае не стандарт и почти не распространен, совместимости со скриптовыми языками других нейропакетов тоже нет. В общем, сейчас наблюдается абсолютное многоязычие - если в какой-то нейропрограмме есть язык программирования, то он свой собственный (примеры - Матлаб с его нейробиблиотекой, NeuroSolution,...). Я сам пишу всё на обычном С/С++ плюс Ассемблер, потребности в специализированных языках не испытываю. Что, с моей точки зрения, сейчас может быть актуальным из языков для программирования нейросеток - так это совершенно не привязанные к нейросеткам языки программирования вычислений на видеокартах - CUDA, Brook. За счет значительно бОльшего числа параллельных процессоров (пиксельных или вершинных шейдеров) видяхи по сравнению с числом ядер проца (даже с учетом того, что каждое ядро может одной SSE-командой обрабатывать 4 плавучих операнда одинарной точности) ускорение расчетов получается в разы. |
| Автор: VictorTsaregorodtsev 9.4.2010, 22:41 |
| часто выразимы в векторно-матричной арифметике. Например, многослойный персептрон (с обучением по обратному распространению) - он у меня больше 10 лет как запрограммирован через введение функций матрично-векторного произведения, векторно-матричного произведения, тензорного произведения векторов, сложения векторов, покоординатного нелинейного преобразования элементов вектора (ну и плюс добавочный код вокруг всего этого дела - перечислил только самые "ресурсоемкие" функции). И внутри всех перечисленных функций, кроме последней (покоординатная трансформация вектора), вычисления строятся вокруг команд умножения-сложения (с промежуточным накоплением, если необходимо). А это - та база, что нужна и 3Д-видео. Т.е. самые нижние уровни (они же - самые тяжелые по времени исполнения) можно переносить на видеопроцессор, оставляя для обычного проца только управляющую логику верхнего уровня. Несколько конкретных подтверждающих перспективность переноса математики на GPU статей и проектов перечислены в написанной 4 года назад моей заметке про http://www.neuropro.ru/memo34.shtml. Естественно, я назвал не всё существовавшее на тогдашний момент - а уж сейчас таких работ многие десятки. |
| Автор: W4FhLF 10.4.2010, 03:51 |
| VictorTsaregorodtsev, действительно, поискал, есть даже реализации и уже отдельные библиотеки. Я уже, кстати, встречал SVM на CUDA (cuSVM). |