В последние годы нейросети стали основой многих современных технологий в области искусственного интеллекта. В этой статье мы рассмотрим, как создать простейшую нейросеть на языке Python с использованием популярной библиотеки Keras, которая работает в связке с TensorFlow.
Что такое нейросеть?
Нейросеть — это математическая модель, состоящая из множества взаимосвязанных узлов или «нейронов», которые обрабатывают информацию. Эти сети могут быть обучены распознавать шаблоны в данных, что делает их полезными во многих приложениях, включая классификацию, регрессию и даже генерацию новых данных.
Установка необходимых библиотек
Если вы еще не установили нужные библиотеки, сделайте это с помощью команд:
1 2 3 |
bash pip install tensorflow |
Пример: Нейросеть для классификации изображений MNIST
Мы будем использовать датасет MNIST, который содержит изображения рукописных цифр. Наша задача — создать нейросеть, которая будет классифицировать эти цифры.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
import tensorflow as tf from tensorflow import keras from keras import layers import numpy as np # Загрузка и подготовка данных MNIST (x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data() x_train, x_test = x_train / 255.0, x_test / 255.0 # Нормализация данных # Создание модели нейросети model = keras.Sequential([ layers.Flatten(input_shape=(28, 28)), # Преобразуем 2D изображения в 1D векторы layers.Dense(128, activation='relu'), # Скрытый слой с 128 нейронами и активацией ReLU layers.Dense(10, activation='softmax') # Выходной слой для 10 классов (цифры от 0 до 9) ]) # Компиляция модели model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) # Обучение модели model.fit(x_train, y_train, epochs=5) # Обучаем 5 эпох # Оценка точности на тестовом наборе test_loss, test_acc = model.evaluate(x_test, y_test, verbose=2) print(f'\nТочность модели на тестовых данных: {test_acc:.2f}') |
Объяснение кода
- Импорт библиотек: Мы импортируем TensorFlow и Keras, а также необходимые модули для работы с нейросетью.
- Загрузка данных: Датасет MNIST загружается с помощью функции
load_data()
. Нормализация изображений выполняется делением на 255, чтобы значения варьировались от 0 до 1 — это помогает ускорить процесс обучения и улучшить качество модели. - Создание модели:
1. Мы создаем последовательную модель (Sequential
), в которую добавляем слои.
2. Flatten преобразует 2D-изображения (28×28) в 1D векторы (784).
3.Dense(128, activation='relu')
создает скрытый слой с 128 нейронами и функцией активации ReLU.
4. Последний слой — выходной (Dense(10, activation='softmax')
), который возвращает вероятности для 10 классов. - Компиляция модели: Мы определяем оптимизатор, функцию потерь и метрики. В данном случае используется adam в качестве оптимизатора и sparse_categorical_crossentropy для многоклассовой классификации.
- Обучение модели: Модель обучается на обучающих данных (
fit
) в течение 5 эпох. - Оценка модели: Мы проверяем точность на тестовых данных и выводим результат.
Заключение
Создание простой нейросети на Python с использованием Keras и TensorFlow — это доступный и увлекательный процесс. Мы рассмотрели основные шаги и написали код для классификации изображений рукописных цифр. Эта основа может быть расширена для более сложных задач и моделей, что делает Python идеальным инструментом для работы в области машинного обучения и искусственного интеллекта.