Как сохранить обученную нейронную сеть в Python с использованием Keras?

В современной разработке использование нейронных сетей стало неотъемлемой частью множества приложений, от распознавания изображений до предсказания временных рядов.

Стремительное развитие глубокого обучения предоставило исследователям и разработчикам инструменты для создания решений, ранее считавшихся невозможными. Одним из ключевых элементов в процессе разработки таких решений является библиотека 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. Мы также рассмотрели, как загрузить сохраненную модель и использовать её для предсказаний. Сохранение моделей является важным шагом в разработке продуктивных систем, позволяющим повторно использовать модели без необходимости переобучения, что экономит время и ресурсы.


Добавить комментарий