Нейронная сеть LeNet-5 была спроектирована в соответствии с работой Яна Лекуна "Градиентное обучение применительно к распознаванию документов". Программирована на языке C без использования сторонних библиотек. На наборе данных MNIST достигается точность распознавания рукописных символов 97% после одного цикла обучения и 98% после нескольких циклов.
Файл main.c представляет собой демонстрационный пример распознавания данных MNIST. Для запуска просто скомпилируйте его. Обучающая выборка состоит из 60000 изображений, тестовая — из 10000.
Проект был создан в Visual Studio 2015 и может быть открыт и скомпилирован непосредственно в Visual Studio 2015 Update 1 и выше. Код написан в ANSI C, поэтому он может быть скомпилирован без изменений на других платформах. В случае ошибки компиляции из-за отсутствия openmp, удалите строки #include <omp.h>
и #pragma omp parallel for
из файла lenet.c.
lenet: Указатель на веса сети LeNet5, основной элемент нейронной сети
inputs: Указатель на двумерный массив unsigned char, представляющий несколько изображений для обучения. Размер памяти указывает на batch size.
labels: Массив меток для каждого изображения. Размер равен batch size.
batchSize: Число изображений для обучения в одном батче.
void TrainBatch(LeNet5 *lenet, image *inputs, uint8 *labels, int batchSize);
```#### Одиночное обучение
lenet: Указатель на веса сети LeNet5, основной элемент нейронной сети
input: Изображение, представленное как двумерный массив
label: Метка для данного изображения
```c
void Train(LeNet5 *lenet, image input, uint8 label);
lenet: Указатель на веса сети LeNet5, основной элемент нейронной сети
input: Изображение, представленное как двумерный массив
count: Количество элементов в результате
uint8 Predict(LeNet5 *lenet, image input, uint8 count);
lenet: Указатель на веса сети LeNet5, основной элемент нейронной сети
void Initialize(LeNet5 *lenet);
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарий ( 0 )