<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Электронный научно-практический журнал «Современные научные исследования и инновации» &#187; MNIST</title>
	<atom:link href="http://web.snauka.ru/issues/tag/mnist/feed" rel="self" type="application/rss+xml" />
	<link>https://web.snauka.ru</link>
	<description></description>
	<lastBuildDate>Sat, 18 Apr 2026 09:41:14 +0000</lastBuildDate>
	<language>ru</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Распознавание рукописных цифр с помощью сверточных нейронных сетей на Python</title>
		<link>https://web.snauka.ru/issues/2025/12/104001</link>
		<comments>https://web.snauka.ru/issues/2025/12/104001#comments</comments>
		<pubDate>Fri, 05 Dec 2025 14:40:16 +0000</pubDate>
		<dc:creator>Мухаяров Дильназ Данисович</dc:creator>
				<category><![CDATA[05.00.00 ТЕХНИЧЕСКИЕ НАУКИ]]></category>
		<category><![CDATA[MNIST]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[TensorFlow]]></category>
		<category><![CDATA[автоматизация]]></category>
		<category><![CDATA[машинное обучение]]></category>
		<category><![CDATA[распознавание рукописных цифр]]></category>
		<category><![CDATA[сверточные нейронные сети]]></category>

		<guid isPermaLink="false">https://web.snauka.ru/issues/2025/12/104001</guid>
		<description><![CDATA[Введение Автоматическое распознавание рукописных цифр — одна из классических задач машинного обучения, которая широко применяется в системах обработки документов и автоматической сортировке почты. Для её решения используют современные методы глубокого обучения, например, сверточные нейронные сети. Рисунок 1. Архитектура сверточной нейронной сети Алгоритм решения задачи - импортируем библиотеки `tensorflow.keras`, `pandas`, `numpy`, `matplotlib` и инструменты для аугментации; [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><strong>Введение</strong></p>
<p style="text-align: justify;"><span>Автоматическое распознавание рукописных цифр — одна из классических задач машинного обучения, которая широко применяется в системах обработки документов и автоматической сортировке почты. Для её решения используют современные методы глубокого обучения, например, сверточные нейронные сети.<br />
</span></p>
<p style="text-align: center;"><img src="https://web.snauka.ru/wp-content/uploads/2025/12/121725_1359_1.png" alt="" /></p>
<p style="text-align: center;"><span>Рисунок 1. Архитектура сверточной нейронной сети<strong><span><br />
</span></strong></span></p>
<p style="text-align: justify;"><span>Алгоритм решения задачи<br />
</span></p>
<p style="text-align: justify;"><span>- импортируем библиотеки `tensorflow.keras`, `pandas`, `numpy`, `matplotlib` и инструменты для аугментации;<br />
</span></p>
<p style="text-align: justify;"><span>- загружаем и проверяем структуру данных через `pd.read_csv()`;<br />
</span></p>
<p style="text-align: justify;"><span>- извлекаем метки и изображения, нормализуем их и преобразуем форму для подачи в модель;<br />
</span></p>
<p style="text-align: justify;"><span>- создаем сверточную модель с помощью `Sequential()`, добавляя слои Conv2D, MaxPooling2D, Dropout;<br />
</span></p>
<p style="text-align: justify;"><span>- компилируем модель, указывая функцию потерь и оптимизатор;<br />
</span></p>
<p style="text-align: justify;"><span>- задаем коллбеки для ранней остановки и снижения скорости обучения;<br />
</span></p>
<p style="text-align: justify;"><span>- делим данные на обучающую и валидационную выборки;<br />
</span></p>
<p style="text-align: justify;"><span>- применяем аугментацию данных через `ImageDataGenerator`;<br />
</span></p>
<p style="text-align: justify;"><span>- обучаем модель с помощью метода `fit()`, использующего генератор и коллбеки;<br />
</span></p>
<p style="text-align: justify;"><span>- визуализируем процесс обучения, строя графики точности и потерь;<br />
</span></p>
<p style="text-align: justify;"><span>- делаем предсказания на тестовом наборе и сохраняем их в CSV файл.<br />
</span></p>
<p style="text-align: center;"><img src="https://web.snauka.ru/wp-content/uploads/2025/12/121725_1359_2.png" alt="" /></p>
<p style="text-align: center;"><span>Рисунок 2. Схема процесса обучения<strong><span><br />
</span></strong></span></p>
<p><span>Код:<br />
</span></p>
<p><span>python<br />
</span></p>
<p><span># Создаем модель<br />
</span></p>
<p><span>model = Sequential()<br />
</span></p>
<p><span>model.add(Conv2D(32, (3,3), activation=&#8217;relu&#8217;, padding=&#8217;same&#8217;, input_shape=(28,28,1)))<br />
</span></p>
<p><span>model.add(BatchNormalization())<br />
</span></p>
<p><span>model.add(MaxPooling2D(pool_size=(2,2)))<br />
</span></p>
<p><span>model.add(Dropout(0.25))<br />
</span></p>
<p><span># (добавляем дополнительные слои)<br />
</span></p>
<p><span>model.add(Dense(10, activation=&#8217;softmax&#8217;))<br />
</span></p>
<p><span># Компиляция модели<br />
</span></p>
<p><span>model.compile(loss=&#8217;categorical_crossentropy&#8217;, optimizer=&#8217;adam&#8217;, metrics=['accuracy'])<br />
</span></p>
<p><span>…<br />
</span></p>
<p><span>…<br />
</span></p>
<p><span># Обучение модели с аугментацией<br />
</span></p>
<p><span>history = model.fit(<br />
</span></p>
<p style="padding-left: 30px;"><span> datagen.flow(x_train_part, y_train_part, batch_size=128),<br />
</span></p>
<p style="padding-left: 30px;"><span> epochs=100,<br />
</span></p>
<p style="padding-left: 30px;"><span> validation_data=(x_val, y_val),<br />
</span></p>
<p style="padding-left: 30px;"><span> callbacks=[early_stop, reduce_lr, lr_scheduler],<br />
</span></p>
<p style="padding-left: 30px;"><span> verbose=1<br />
</span></p>
<p><span>)<br />
</span></p>
<p><span>…<br />
</span></p>
<p><span>…<br />
</span></p>
<p><span>python<br />
</span></p>
<p><span># Визуализация результатов<br />
</span></p>
<p><span>plt.plot(history.history['accuracy'], label=&#8217;Train Accuracy&#8217;)<br />
</span></p>
<p><span>plt.plot(history.history['val_accuracy'], label=&#8217;Validation Accuracy&#8217;)<br />
</span></p>
<p><span>plt.legend()<br />
</span></p>
<p><span>…<br />
</span></p>
<p style="text-align: justify;"><span><strong>Вывод:<br />
</strong></span></p>
<p style="text-align: justify;"><span>В статье рассмотрена реализация сверточной нейронной сети для распознавания рукописных цифр. Использование методов аугментации и коллбеков позволяет повысить точность модели и избежать переобучения. Визуализация процесса обучения помогает контролировать качество модели. Правильная подготовка данных и архитектуры — залог успешного решения задачи. Такой подход широко применяется в системах автоматической обработки изображений.</span></p>
]]></content:encoded>
			<wfw:commentRss>https://web.snauka.ru/issues/2025/12/104001/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
