Pull to refresh

Comments 23

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

Сделайте поддержку AMD GPU и к вам потянуться те кто на нем.
TensofFlow — только NVIDIA/

У Tensorflow есть экспериментальная поддержка OpenCL (по крайней мере, когда я его последний раз компилировал, он меня спрашивал нужна ли поддержка OpenCL).
У нас OpenCL в планах одновременно с CUDA.

О, какой удачный случай. Что-набудь скажете про пример с XOR, выглядит сносно? Имеет смысл в примеры библиотеки заливать?

На первый взгляд прилично. Думаю лучше открыть PR и там уже пример рассмотрят всесторонне.

Небольшое уточнение по вступрительному параграфу:
Пока TensorFlow активно завоевывает мир, воюет за аудиторию с такими крупными игроками рынка машинного обучения и глубоких нейронных сетей как Keras, Theano и Caffe
TensorFlow не «воюет» с Keras, а является одним из его backend'ов (наряду с Theano). Другими словами, Keras работает на TensofFlow.
Это как посмотреть. Не уверен, что авторы TensorFlow будут рады тому, что на слуху будет Keras, а не TF, даже если первый работает поверх второго. Все же за популярность и применение в качестве стандарта де-факто по-моему борьба есть.

Особенно в свете того, что Theano как бекенд Keras'а на данный момент надирает TF по скорости)

А какие у этой библиотеки способы использования?
Я вот ищу что нибудь чтобы для фиксированной базы из тысяч цветных иллюстраций очень быстро определять соответвие по изображению с камеры (или узнать что совпадений нет).
Для этих целей подойдет?
Краткий ответ: да, при правильном использовании.
Длинный ответ: эта библиотека лишь одна из многих. Для проверки Вашей гипотезы я бы лично порекомендовал воспользоваться более простыми фреймворками (притом не обязательно сразу используя глубинное обучение, зависит от данных), например sklearn. Если взлетит и Вы сами найдете для себя решение, то уже тогда только стоит начинать думать о том, как же внедрить решение в условиях ваших ограничений по ресурсам, железу, фреймворку, языку. Но для проведения такой проверки Вам понадобится «понять» данные, продумать их представление и т.д., вполне себе стандартная работа специалиста по ML. Вызвать одну функцию и получить профит как например с QR-кодами вряд ли получится.
Начал использовать tiny_dnn, когда он еще назывался tiny_ cnn. Повелся на простоту интеграции в проект. На редкость тормознутое творение. Стал разбираться в причинах — авторы так увлеклись распараллеливанием алгоритмов и асинхронным их исполнением, что дошли до маразма. Апофеозом было копирование 10 чисел, путем распараллеливания на 8 потоков! Естественно, что из-за потерь на синхронизацию производительность была ниже плинтуса. Убрал лишнее распараллеливание, добавил где надо SIMD оптимизации — вроде стало работать более менее быстро. Только по итогу от исходного проекта практически ничего не осталось. В итоге в конце концов свой велосипед написал. В последней версии они переписали очень многое — стало гораздо лучше в плане производительности, но все равно свой велосипед в разы опережает.

А почему бы не открыть PR или хотя бы issue по тормозящим моментам?

Тут есть ряд моментов. Сам мой велосипед Само мое решение находится в открытом доступе:

https://github.com/ermig1979/Simd/blob/master/src/Simd/SimdNeural.hpp

Стоит отметить, что решение менее универсально, чем оригинальный tiny_cnn и тем более tiny_dnn. Кроме того оно завязано на библиотеку Simd. А это противоречит основной концепции tiny_dnn — все в заголовочных файлах и желательно без сторонних зависимостей. Потому просто сделать pull request будет довольно затруднительно.

Хотя я наверное был бы рад помочь.
Да, присоединюсь к Randl — если можете сделать мир библиотеку лучше, то почему бы не поделиться? Я уверен, что с Вами будут рады обсудить идеи.
Интересно! Спасибо за статью. С такой простотой использования, ещё и на С++, мне захотелось всё-таки разобраться, как этими сетями польоваться на практике :)

Caffe еще проще, и деплоить можно в C++ код.
Правда за счет im2col, без напильника в embedded особо не влезешь.

Embedded мне не интересно, только десктоп. Библиотека, которая просто подключается и работает без возни со сборкой и т. д. — это огромный плюс.

Caffe собирается из CMake'а, т.ч. там никаких проблем нету (список зависимостей устанавливается одной командной apt-get install)...

Под Windows тоже собирается с помощью CMake (забирайте ветку windows). Все зависимости скачиваются в виде пребилдов автоматом.
Увы, не для текста. Рекуррентных сетей вообще нет (и похоже не предвидится).

На текст специализируются похоже только https://github.com/clab/dynet да https://github.com/pfnet/chainer
Sign up to leave a comment.

Articles