LeNet-5 — это нейронная сеть, разработанная на основе статьи YANN LECUN «Gradient-based Learning Applied To Document Recognition». Она написана на языке C и не зависит от сторонних библиотек.
Первоначальная точность распознавания рукописных символов MNIST составляет 97%, а после многократного обучения — 98%.
Файл main.c представляет собой демонстрацию распознавания данных из набора MNIST. Для запуска достаточно скомпилировать программу. В тренировочном наборе 60 000 изображений, в тестовом — 10 000.
Проект представляет собой проект VISUAL STUDIO 2015. Его можно открыть и скомпилировать с помощью VISUAL STUDIO 2015 UPDATE1 или более поздней версии. Программа написана на ANSI C, поэтому её можно компилировать на других платформах без изменений в исходном коде.
Если программа не компилируется из-за отсутствия openmp, удалите строки #include <omp.h> и #pragma omp parallel for из файла lenet.c.
lenet: указатель на веса LeNet5, ядро нейронной сети LeNet5. inputs: массив указателей на двумерные массивы unsigned char, соответствующие нескольким изображениям для обучения. Размер памяти, на которую указывают эти указатели, должен быть кратен batchSize. В примере с MNIST размер каждого двумерного массива равен 28x28, а значения элементов представляют собой интенсивность пикселей изображения в соответствующей позиции. labels: массив меток, соответствующих изображениям из inputs. Размер массива равен batchSize. batchSize: количество изображений в пакете для обучения. void TrainBatch(LeNet5 *lenet, image *inputs, uint8 *labels, int batchSize);
lenet: указатель на веса LeNet5, ядро нейронной сети LeNet5. input: изображение для обучения, представленное в виде двумерного массива. label: метка, соответствующая изображению input. void Train(LeNet5 *lenet, image input, uint8 label);
lenet: указатель на веса LeNet5, ядро нейронной сети LeNet5. input: данные входного изображения. count: количество элементов в векторе результатов. возвращаемое значение: результат прогнозирования. uint8 Predict(LeNet5 *lenet, image input, uint8 count);
lenet: указатель на веса LeNet5, ядро нейронной сети LeNet5. void Initial(LeNet5 *lenet);
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )