Keras – это высокоуровневая библиотека для обучения нейронных сетей, написанная на Python. В этом уроке мы рассмотрим обучение сети распознаванию рукописных цифр с помощью Keras. Мы будем использовать набор данных MNIST, который содержит изображения рукописных цифр от 0 до 9.
Шаг 1: Установка Keras
Прежде всего, убедитесь, что у вас установлен Keras. Вы можете установить Keras, выполнив следующую команду:
pip install keras
Кроме того, убедитесь, что у вас установлены следующие библиотеки:
pip install numpy matplotlib tensorflow
Шаг 2: Импорт необходимых библиотек
Давайте начнем с импорта необходимых библиотек:
import numpy as np
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense, Flatten
from keras.utils import to_categorical
Шаг 3: Загрузка и предобработка данных
Теперь загрузим набор данных MNIST и предобработаем его:
(x_train, y_train), (x_test, y_test) = mnist.load_data()
# Преобразуем изображения в одномерный массив и нормализуем их
x_train = x_train.reshape((-1, 28, 28, 1)) / 255.0
x_test = x_test.reshape((-1, 28, 28, 1)) / 255.0
# Преобразуем метки в кодировку one-hot
y_train = to_categorical(y_train)
y_test = to_categorical(y_test)
Шаг 4: Создание модели нейронной сети
Теперь создадим модель нейронной сети с помощью Keras:
model = Sequential([
Flatten(input_shape=(28, 28, 1)),
Dense(128, activation='relu'),
Dense(10, activation='softmax')
])
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
Шаг 5: Обучение модели
Теперь обучим модель на наборе данных MNIST:
model.fit(x_train, y_train, batch_size=32, epochs=10, validation_data=(x_test, y_test))
Шаг 6: Оценка модели
Наконец, оценим качество модели на тестовом наборе данных:
loss, accuracy = model.evaluate(x_test, y_test)
print(f'Точность: {accuracy * 100}%')
Это всё, теперь у вас есть модель нейронной сети, способную распознавать рукописные цифры. Вы можете провести дополнительные эксперименты, изменяя архитектуру сети, количество эпох обучения и т.д. В документации Keras вы найдете более подробную информацию об использовании этой библиотеки для обучения нейронных сетей.
на самом деле в данной задаче нормализацию входных данных делать абсолютно бессмысленно, так как у нас каждый параметр (тоесть пиксель) может лежа в абсолютно одинаковом диапазоне значений. Если диапазоны значений для разных параметров были бы разными, то нормализация была бы необходима.
Спасибо за уроки 🖖👍
Привет, Автор. Не знаю, найдешь ли ты мой комментарий в столь большом количестве уведомлений. Да и не помню, писал ли я тебе что-то подобное…Прости, память на мелочи у меня ужасна😅
Но хочу сказать огромное спасибо за данный плейлист. А также прошу никогда не удалять его. Настолько понятное и бесплатное объяснение я больше нигде не найду. Спасибо за твои труды. Не смотря на малый доход, ты все равно создал его. Еще раз спасибо❤
Если у кого не получается такая же точность распознавания, проверьте, может у вас закончились вычислительные единицы гугл колаб, он теперь ПЛАТНЫЙ.
А есть ссылка на итоговый коллаб?
вот такой вот RElu…что за relu
Здравствуйте, спасибо за видео. А вот если у меня есть целая строка из цифр (5 штук), находящихся постоянно на разных расстояниях. Как я могу обучить ai на распознавание строки, пускай даже фиксированного размера.
3:45, а вы точно человек, а не нейросеть?)
Я люблю тебя, лучшее обяснение. Где ты работаеш?
Будет ли разница в результатах, если подавать вектор по вертикальным строкам изображения, а не горизонтальным? И можно ли подавать трёхмерный входящий вектор? Т.е. не построчно изображение, а сразу в двух измерениях?
Много словоблудия, ноль практики. Структура объясняется очень оторвано от контекста, не понятно и откровенно говоря становится скучно смотреть
Невероятно крутой канал! Всё очень понятно объясняет автор. Возник вопрос: а как убирать ошибки, которые рассмотрели в конце? Надеюсь, следующий урок про это!
Спасибо. Хороший материал. Не совсем понятно,как интерпретировать выходные значения вероятности (тайм код 19.33) Это что за цифры проценты или ещё что-то? По идее сумма вероятностей всех классов не может быть больше 1. А здесь 4.78…, 5,05…., 9,99…. итд. Эти цифры как нибудь соотносятся с метрикой точности?
Ещё раз большое спасибо за классные лекции. По этой лекции остался вопрос по синкасису питона. Нигде не нашёл правила, по которому если координатами списка является список с булевыми компонентами, где у вас maska, то в операторе присваивания выделяются только компоненты true. Это действительно есть такой синтаксис? Он только у python?
Большое спасибо, Сергей, классно объясняете. Остался вопрос, на который чат gtp так и не ответил правильно: почему кросс энтропия? Ведь значения ноль при умножении на логарифм пресказания убирает из ошибки, а это ошибка и её нужно уменьшать. Чат ответил, что не участвует в предсказании, поэтому не нужен.
Огромное спасибо за объяснение базовых основ!
Что такое 'camp=plt.cm.binary'? У меня вообще выдаёт, что не существует такого. Удаляю, всё работает
Почти три года ( день в день) изучаю программирование, посидел на разных языках. Но сильнее ваших уроков не встречал . И вот почему. Есть уроки которые объясняют очень простые вещи подробно , таких процентов 70 . Есть уроки которые объясняют ребята с большим опытом ,но они ценят свое время и чаще воспринимают это как способ доп заработка поэтому кратенько сухо . Ещё бывают, толком сам не понял начинает объяснять вижу подчёркнута добрая часть кода , оп затемнение и проект компилируется, у них ,а я плююсь пытаюсь найти решение проблем с версией корявого кода и тд .
И получается в первом случае слишком низкий уровень во втором слишком высокий к которому ещё нужно хорошо подготовиться .
Но вот чтоб так подробно, такие сложные вещи, это что то не с этой планеты . Спасибо вам большое, счастья,здоровья, долгих лет . 😁
Сергей, Вы большой молодец. Спасибо за курсы!!! Я очень рад, что нашел Ваш канал=)
Шеф, супер тема! И подача просто огонь, даже тупым как я доходит слёту!
Спасибо за труды и просвещение нас недалеких!!! Респект!!!!