Tinn (Tiny Neural Network) — это библиотека нейронной сети на 200 строках кода, написанная на C99 и не имеющая зависимостей.
Для демонстрации обучения распознаванию рукописных цифр получите данные для тренировки:
wget http://archive.ics.uci.edu/ml/machine-learning-databases/semeion/semeion.data
make; ./test
Тренировочные данные включают рукописные цифры, записанные как медленно, так и быстро. Каждая строка данных представляет собой одну рукописную цифру размером 16x16 пикселей, что составляет 256 входов для нейронной сети.
Каждый набор данных заканчивается десятью цифрами, указывающими на конкретную рукописную цифру:
0: 1 0 0 0 0 0 0 0 0 0
1: 0 1 0 0 0 0 0 0 0 0
2: 0 0 1 0 0 0 0 0 0 0
3: 0 0 0 1 0 0 0 0 0 0
4: 0 0 0 0 1 0 0 0 0 0
...
9: 0 0 0 0 0 0 0 0 0 1
Это даёт 10 выходов для нейронной сети. Программа тестирования выведет точность для каждой цифры. Ожидайте более 99% точности для правильной цифры и менее 0,1% для других цифр.
Портативность — работает там, где есть компилятор C99 или C++98.
Активация сигмоидой.
Одно скрытое слой.
Tinn никогда не будет использовать больше стандартной библиотеки C.
Tinn отлично подходит для встроенных систем. Обучите модель на мощном рабочем столе и загрузите её на микроконтроллер, используйте аналогово-цифровой конвертер для прогнозирования реальных событий в режиме реального времени.
Исходный код Tinn всегда будет меньше 200 строк. Внешние функции, объявленные в заголовочном файле Tinn, защищены пространством имён _xt_
, что означает "внешние Tinn".
Tinn легко может быть многопоточным с некоторым изобретательством, но основная ветка останется однопоточной для помощи в развитии для встроенных систем.
Tinn не инициализирует генератор случайных чисел. Не забудьте сделать это самостоятельно.
Всегда перемешивайте ваши входные данные. Перемешивайте снова после каждого цикла обучения.
Увеличьте точность обучения аннеалированием скорости обучения. Например, умножьте вашу скорость обучения на 0.99 каждый цикл обучения. Это позволит найти хорошее минимум обучаемости.
Tinn является примером минимализма.
Tinn не является полнофункциональной библиотекой нейронной сети на C, такой как Kann или Genann:
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )