Создаем свою первую нейросеть на Python

В этой статье мы создадим простую нейронную сеть для классификации рукописных цифр с использованием библиотек TensorFlow и Keras. Этот пример отлично подходит для начинающих.
Шаг 1: Установка библиотек
Для начала установим необходимые библиотеки. Если у вас их нет, выполните следующие команды:
pip install tensorflow numpy matplotlib
Шаг 2: Импорт библиотек
Импортируем необходимые модули:
import tensorflow as tf
from tensorflow.keras import layers, models
import numpy as np
import matplotlib.pyplot as plt
Шаг 3: Загрузка данных
Используем набор данных MNIST, который содержит изображения рукописных цифр:
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()
# Нормализация данных
x_train = x_train / 255.0
x_test = x_test / 255.0
Шаг 4: Создание модели
Создадим простую полносвязную нейронную сеть:
model = models.Sequential([
layers.Flatten(input_shape=(28, 28)), # Преобразуем изображение 28x28 в вектор
layers.Dense(128, activation='relu'), # Полносвязный слой с 128 нейронами
layers.Dense(10, activation='softmax') # Выходной слой с 10 нейронами (по одному на каждую цифру)
])
Шаг 5: Компиляция модели
Компилируем модель, указав оптимизатор, функцию потерь и метрики:
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
Шаг 6: Обучение модели
Обучим модель на тренировочных данных:
model.fit(x_train, y_train, epochs=5, validation_data=(x_test, y_test))
Шаг 7: Оценка модели
Проверим точность модели на тестовых данных:
test_loss, test_acc = model.evaluate(x_test, y_test)
print(f"Точность на тестовых данных: {test_acc:.4f}")
Шаг 8: Визуализация результатов
Визуализируем несколько примеров и предсказаний модели:
predictions = model.predict(x_test)
plt.figure(figsize=(10, 10))
for i in range(25):
plt.subplot(5, 5, i+1)
plt.imshow(x_test[i], cmap='gray')
plt.title(f"Предсказано: {np.argmax(predictions[i])}")
plt.axis('off')
plt.show()
Заключение
Мы создали простую нейронную сеть для классификации рукописных цифр. Этот пример демонстрирует базовые шаги для работы с нейронными сетями. Вы можете экспериментировать с архитектурой сети, добавлять слои и изменять параметры для улучшения результатов.