Открыть список
Как стать автором
Обновить

Комментарии 17

я так и не понял, примеры что делают?
а сеть для чего?
Примеры показывают как создать сеть, создать обучающую выборку и как включить обучение.
Какую задачу захотите решить, для того сеть и будет. На MNIST учат сеть распознавать числа на картинках, а можно с помощью нейронки решать другие задачи.
Не используя BLAS для матричных умножений (для CPU выбор досточно обширен — OpenBLAS, BLIS, ATLAS, ACML, MKL, или что-то более высокоуровневое, типа Eigen), вы мгновенно теряете в производительности, причем достаточно много. Если мне не изменяет память, на процессорах семейства Haswell, 18 ядер, MNIST на плоских полносвязанных сетках тренируется за несколько десятков секунд до ~98% (с учетом того, что бейзлайн в 90% с логистической регрессией достигается за секунды).
А в целом, тот стиль архитектуры, который вы используете (в частности, выделение понятия нейрона в отдельный класс), был популярен лет 15 назад. Сейчас используют векторизированные представления/вычисления.
Хотел реализовать сеть без внешних зависимостей.
Буду переписывать архитектуру, переходить к матричному подходу.
Нейронные сети «замечательны», «прекрасны» и…!!! Так думают примерно все, кто не понимает их технологию. А когда вникнешь — это обыденность.
Прочитав статью, я сначала не понял чему посвящён проект. Но, встретив упоминание MNIST, всё стало ясно (не кластеризация, не аппроксимация, а просто распознавание буковок-циферок-картинок). Очень рад что вы выбрали сигмойду (есть ещё тангенсойда и прочие -ойды). И все они из рубрики «логистическая регрессия». А есть что-то ещё?! — Есть! Но среди «специалистов по ИИ» принято «крысить» информацию и заниматься лишь «хиханьками-хаханьками» над теми, кто ещё «не в теме». Я не стану отступать от этого «уже сложившегося» «прекрасного» правила, но от себя скажу, что достаточно найти один полный и толковый курс по «машин лёрнингу» (да-да, так щас модно называть ИИ), чтобы сначала долго материть тех, кто наводит на эту тему туман, давая лишь кусочки информации, из которых очень тяжело собрать целостную картину, а затем просто оставить эту тему как пройденный этап, инструмент, имеющий свою область применимости, но никак не магическое средство «от всего», как это преподносится, ой, да где только это не преподносится…

Если не сложно, то можете дать ссылку на толковый курс или книгу? Желательно на русском.

Николенко, Кадурин, Архангельская «Глубокое обучение» — очень внятно и исчерпывающе все базовые знания о НС
Но среди «специалистов по ИИ» принято «крысить» информацию и заниматься лишь «хиханьками-хаханьками» над теми, кто ещё «не в теме».

Это точно. Вы прям мой опыт общения с ними описали.
Поиграться — это запустить готовый тест. А у вас test — пустой файл.
Не получилось поиграться…
Нет желания переписать на матрицы, и посмотреть, как сильно возрастет скорость работы? :-)
Приведу ссылку на свой комментарий к похожей статье, он актуален и для этой: habr.com/ru/post/440162/#comment_19765270
Но тут автор уже до OpenMP дошел :-)
Да, честно, я осознал устаревший вариант своей архитектуры. Буду переписывать на матрицы.

Начальные веса выбираются случайно? Приведенная точность указана для обучающей выборки или выполнялась валидация для данных, которые нейросеть еще «не видела» (unseen data)?

Очень правильные вопросы :)
Начальные веса выбираются случайно.
Речь идёт об unseen data. В настройках сети я могу указать, размер контрольной выборки.
используем оптимизацию Адама
С оптимизацией Адама ...

Первый раз вижу, чтобы фраза "adaptive moment estimation" переводилась как "оптимизация Адама".

Интересный велосипед.

По глазам резануло что у вас есть отдельно обучение и оптимизация. По моему обычно оптимизации никто не выделяет, просто есть алгоритмы разные, и SGD один из них (кстати SGD это не обычный градиентный спуск как у вас сказано в Wiki, а стохастический).

Интересно было бы услышать насколько эффективна смена алгоритма оптимизации в процессе обучения и особенно про мутации. Как-то эти подходы сильно отличаются от классики которую дают во всех учебниках.
1) Это не просто велосипед, это велосипед с квадратными колёсами.
2) В статье которую я прочёл, Адам шёл как улучшенная версия SGD, потому и оптимизация Адама.
3) Адам заметно ускоряет процесс обучения, перепрыгивая локальные минимумы. SGD очень медленный. Нестеров обучает быстрее чем SGD, но застревает в локальных минимумах.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.