ML - Сохранение модели глубокого обучения в Керасе
Обучение нейронной сети / модели глубокого обучения обычно занимает много времени, особенно если аппаратная мощность системы не соответствует требованиям. После завершения обучения мы сохраняем модель в файл. Чтобы повторно использовать модель в более поздний момент времени для прогнозирования, мы загружаем сохраненную модель.
Через Keras модели можно сохранять в трех форматах:
- Формат YAML
- Формат JSON
- Формат HDF5
Файлы YAML и JSON хранят только структуру модели, тогда как файл HDF5 хранит полную модель нейронной сети вместе со структурой и весами. Следовательно, если структура модели сохраняется с использованием формата YAML или JSON, веса должны храниться в файле HDF5 для хранения всей модели.
Учитывая набор данных о ценах на жилье в Бостоне:
Код: загрузка набора данных и предварительная обработка данных
import keras from keras.datasets import boston_housing (train_data, train_targets), (test_data, test_targets) = boston_housing.load_data() mean = train_data.mean(axis = 0 ) train_data - = mean std = train_data.std(axis = 0 ) train_data / = std test_data - = mean test_data / = std |
Код: обучение модели нейронной сети на нем
from import models keras from layers import keras model = models.Sequential() model.add(layers.Dense( 64 , activation = "relu" , input_shape = (train_data.shape[ 1 ], ))) model.add(layers.Dense( 64 , activation = "relu" )) model.add(layers.Dense( 1 )) model. compile (optimizer = "rmsprop" , loss = "mse" , metrics = [ "mae" ]) loss, accuracy = model.evaluate(test_data, test_targets) |
Выход:
Код: Сохранение и перезагрузка модели в формате файла HDF5
from keras.models import load_model model.save( "network.h5" ) loaded_model = load_model( "network.h5" ) loss, accuracy = loaded_model.evaluate(test_data, test_targets) |
Выход:
Код: Сохранение и перезагрузка модели в формате файла JSON
# Saving model structure to a JSON file model_json = model.to_json() # with open("network.json", "w") as json_file: json_file.write(model_json) # Saving weights of the model to a HDF5 file model.save_weights( "network.h5" ) # Loading JSON file json_file = open ( "network.json" , 'r' ) loaded_model_json = json_file.read() json_file.close() loaded_model = model_from_json(loaded_model_json) # Loading weights loaded_model.load_weights( "network.h5" ) loss, accuracy = loaded_model.evaluate(test_data, test_targets) |
Код: Сохранение и перезагрузка модели в формате файла YAML
# Saving model structure to a YAML file model_yaml = model.to_yaml() with open ( "network.yaml" , "w" ) as yaml_file: yaml_file.write(model_yaml) # Saving weights of the model to a HDF5 file model.save_weights( "network.h5" ) # Loading YAML file yaml_file = open ( "network.yaml" , 'r' ) loaded_model_yaml = yaml_file.read() yaml_file.close() loaded_model = model_from_yaml(loaded_model_yaml) # Loading weights loaded_model.load_weights( "network.h5" ) loss, accuracy = loaded_model.evaluate(test_data, test_targets) |
Внимание компьютерщик! Укрепите свои основы с помощью базового курса программирования Python и изучите основы.
Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.