Pull to refresh

Comments 7

UFO just landed and posted this here
Спасибо за положительный отзыв. Я работаю с рекуррентными сетями, в Accord.NET судя по документации с этим, к сожалению, очень туго. Потом Accord.NET он реализуется исключительно на C#, который мне кажется для быстрого прототипирования разных архитектур нейронных сетей слишком громоздким. До начала работы (и после) я смотрел разные библиотеки, но не нашел ничего подходящего. Сейчас ситуация меняется, но медленно. FSCL когда-то я тоже пытался приделать к своей библиотеке (было бы очень красивое решение) но, на тот момент получил замедление работы в 5 раз, из-за накладных расходов. Вернутся к этому руки не доходят.
Такое ощущение, что про F# стали забывать. Спасибо автору, что не поленился написать статью в хабр.
а разве строгая типизация (вы привели один аргумент в пользу фшарпа) перевешивает профит который дает нумпая? то что нумпай использует например linalg? это же реальное ускорение работы в десятки раз, а так же современные НС без ГПУ как бы годны только для игрушечных примеров, а дотнет не сильно дружит с кудой

в питоне если даже не обращать внимание на либы, есть скажем cudamat которые реализует интерфейс нумпая, и достаточно заменить нумпай на него, что бы все вычисления перевести на ГПУ

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

я кстати давно тоже баловался, реализовывая нейросети на дотнете, конкретно на сишарпе, ну прикольно, побаловался

ну а если по хардкору, то вот Максим пишет на сях нейросети milakov.github.io/nnForge
нет никаго «профита» от numpy ибо никто не мешает вызвать нативные функции из .NET, тот же BLAS (я даже начал это постепенно внедрять). Никто не мешает вызвать cuBLAS если на то пошло, любой GPU код написанный на C. Поэтому это по крайней мере не хуже, чем ситуация с python. Есть даже компиляторы с ограниченного подмножества F# в CUDA C или в OpenCL.

И в python не все так просто. Чтобы получить действительно эффективный код для сложных нейросетевых архитектур, недостаточно перенести только математические функции на GPU, нужно перенести целый блок вызовов этих функций вместе с логикой кода, которая будет на python. Это решается в Theano или TensorFlow тем, что создается средствами подмножества языка из некоторых предопределенных операций вычислительный граф, который компилируется и выполняется на GPU. То же самое можно сделать из F#, даже лучше. Так что принципиальных проблем нет, есть просто факт того, что мейнстрим работает с python'ом.

Более того, я не соглашусь, что без GPU можно посчитать только игрушечные примеры. На распознавании изображений, возможно, но кроме распознавания изображений есть много чего. А еще многие сейчас от избытка ресурсов используют излишни неэффективно спроектированные нейросетевые модели. Например, вставляют везде LSTM ячейки, даже там где они не нужны вообще.

Да, вот это было обучено на CPU, кстати. 160 миллиардов параметров. Совсем не слабо.
В том, что выложено нужная модель есть. Правда нет примера, с той частью где читаются данные и формируются вектора для входа и для выхода. Старый пример с этой версией уже не совместим. Есть аналогичный функционал в библиотеке TensorFlow от Google (см. сравнение https://habrahabr.ru/company/meanotek/blog/271053/). Если ваш лог не секретный можете прислать мне, я попробую прогнать, посмотрим, что получится )
Sign up to leave a comment.