В современной разработке использование нейронных сетей стало неотъемлемой частью множества приложений, от распознавания изображений до предсказания временных рядов.
Стремительное развитие глубокого обучения предоставило исследователям и разработчикам инструменты для создания решений, ранее считавшихся невозможными. Одним из ключевых элементов в процессе разработки таких решений является библиотека Keras. Это высокоуровневый API для нейронных сетей, работающий поверх TensorFlow, Theano или CNTK, который делает создание и обучение моделей простым и интуитивно понятным.
Установка Keras
Для начала работы с Keras необходимо установить саму библиотеку и все её зависимости. Это легко делается с использованием pip
, менеджера пакетов Python.
pip install keras
Эта команда установит последнюю версию Keras вместе с её основными зависимостями.
Обучение нейронной сети
Теперь рассмотрим процесс построения и обучения простой нейронной сети с помощью Keras. В качестве примера возьмем задачу классификации изображений.
Пример кода
import keras
from keras.models import Sequential
from keras.layers import Dense, Flatten
# Пример создания модели
model = Sequential()
model.add(Flatten(input_shape=(28, 28)))
model.add(Dense(128, activation="relu"))
model.add(Dense(10, activation="softmax"))
# Компиляция модели
model.compile(
optimizer="adam", loss="sparse_categorical_crossentropy", metrics=["accuracy"]
)
# Пример данных
import numpy as np
x_train = np.random.random((1000, 28, 28))
y_train = np.random.randint(10, size=(1000,))
# Обучение модели
model.fit(x_train, y_train, epochs=10, batch_size=32)
Сохранение модели
Сохранение обученной модели — ключевой шаг для применения модели в будущем, без необходимости повторного обучения. Keras предоставляет несколько способов сохранения моделей, включая форматы JSON и HDF5.
Пример кода
Сохранение модели в формате HDF5:
# Сохранение модели в формате HDF5
model.save('model.h5')
HDF5 (Hierarchical Data Format) позволяет хранить не только архитектуру модели, но и её веса и конфигурацию.
Загрузка сохраненной модели
Теперь рассмотрим процесс загрузки сохраненной модели для её использования.
Пример кода
from keras.models import load_model
# Загрузка обученной модели
loaded_model = load_model('model.h5')
# Пример предсказания
import numpy as np
x_test = np.random.random((10, 28, 28))
predictions = loaded_model.predict(x_test)
print(predictions)
Теперь с учетом типизации данных
Включение типизации данных в Python-коде помогает повысить читаемость и упрощает отладку. Рассмотрим пример функции предсказания с использованием типизации.
Пример кода
from typing import Any, List
import numpy as np
def predict(model: Any, input_data: np.ndarray) -> List[np.ndarray]:
"""
Возвращает предсказания модели для заданного входного массива.
:param model: Обученная модель Keras
:param input_data: Массив данных для предсказания
:return: Лист массивов предсказаний
"""
predictions = model.predict(input_data)
return predictions.tolist()
# Использование функции
preds = predict(model=loaded_model, input_data=x_test)
print(preds)
Заключение
В этой статье мы рассмотрели, как создать, обучить и сохранить нейронную сеть с использованием библиотеки Keras. Мы также рассмотрели, как загрузить сохраненную модель и использовать её для предсказаний. Сохранение моделей является важным шагом в разработке продуктивных систем, позволяющим повторно использовать модели без необходимости переобучения, что экономит время и ресурсы.