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

Сверточные нейронные сети. Создание нейросети для распознавания цифр на языке программирования Python

Уровень сложностиСредний
Время на прочтение18 мин
Количество просмотров9.1K
Всего голосов 16: ↑14 и ↓2+12
Комментарии10

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

90% - это не отличная точность, это - так себе. У ЛеКуна в 1998 году, через 10 лет как он изобрел сверточную сеть, была 98.4% . Сейчас датасет рукописных цифр MNIST выработан. Сейчас в тестовом датасете не определяются сетями только 5 или 7 изображений (из 10000), которые даже человек не способен разобрать.

По сверточным можно сказать, что они достигают точности на задаче классификации при точности равной 90,9%. Так что не вижу тут проблемы, на мой взгляд.

Если берем собственный датасет, то от 90 % для распознования текста в данной модели - достаточно.

Точность важный, но не единственный параметр. Следует учитывать так же: обобщающую способность, скорость предсказания, ресурсы для обучения, устойчивость к изменяющимся данным, интерпретируемость и т.д.

Попробовали бы они числа в преферансной пуле разобрать...

Статье явно не хватает картинок с результатами распознавания и набором данных

Согласен. Подумал об этом уже после публикации. Первая статья, так что в дальнейшем планирую писать статьи более наглядно.

Хорошо структурированная модель. Есть несколько предложений для улучшения. Увеличте количество фильтров в сверточных слоях и добавьте дополнительных сверточных слоев, это может помочь модели извлекать более сложные признаки, а для уменьшения переобучения (на будущее) можно добавить слои Dropout между полносвязными слоями.

Почему у Вас один слой свертки и одни пуллинга? Почему не два слоя свертки? Зачем делить на 255 значение каждого пикселя? Почему используете sequential? почему не используете другие возможности создания модели? Почему оптимизатор Адам именно? Почему у Вас 10 выходов в модели, почему не сделать один выход который сразу цифру давал бы предсказанную?

Почеум именно 5 эпох тут? model.fit(x_train, y_train, epochs=5) может она у Вас не обученная или уже переобученная?

Почему так сохраняете модель "model.save('my_model.keras')" ? Вы уверены что вы сохранили модель с лучшей точностью на 5 эпохе?

Почему не использовали аугментацию ? Зачем нужно строить свою модель, почему не взять уже готовую модель обученную и дообучить ее?

Дополните, пожалуйста, обязательно статью, очень много вопросов по статье.

Спасибо за вопрос! Я возможно не достаточно точно, по крайней мере не для всех, описал некоторые моменты, поэтому с радостью дополню статью развернутым объяснением по интересующим Вас вопросам.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации