Продолжу серию статей по нейронным сетям и библиотеке keras. Сегодня я расскажу о том, как сохранять нейросетевую модель в файл и загружать ее из файла.
Keras предоставляет простой интерфейс для этого функционала. Модель сохраняется в json-файл с помощью метода to_json(), а загружается с помощью from json().
Сохраняем в файл:
1 2 3 4 | from keras.models import model_from_json model_json = model.to_json() with open("model.json", "w") as json_file: json_file.write(model_json) |
Содержимое JSON файла для классификатора из этой статьи выглядит так:
{«loss»: «categorical_crossentropy», «optimizer»: {«beta_1»: 0.8999999761581421, «epsilon»: 1e-08, «beta_2»: 0.9990000128746033, «lr»: 0.0010000000474974513, «name»: «Adam»}, «class_name»: «Sequential», «keras_version»: «1.0.6», «config»: [{«class_name»: «Dense», «config»: {«W_constraint»: null, «b_constraint»: null, «name»: «dense_1», «output_dim»: 4, «activity_regularizer»: null, «trainable»: true, «init»: «normal», «bias»: true, «input_dtype»: «float32», «input_dim»: 4, «b_regularizer»: null, «W_regularizer»: null, «activation»: «relu», «batch_input_shape»: [null, 4]}}, {«class_name»: «Dropout», «config»: {«p»: 0.2, «trainable»: true, «name»: «dropout_1»}}, {«class_name»: «Dense», «config»: {«W_constraint»: null, «b_constraint»: null, «name»: «dense_2», «activity_regularizer»: null, «trainable»: true, «init»: «normal», «bias»: true, «input_dim»: null, «b_regularizer»: null, «W_regularizer»: null, «activation»: «sigmoid», «output_dim»: 3}}], «sample_weight_mode»: null}
Теперь мы можем загрузить модель из файла.
1 2 3 4 | jfile = open("model.json", "r") loaded_model = jfile.read() jfile.close() loaded_model = model_from_json(loaded_json) |
Далее мы можем проводить с переменной loaded_model все стандартные процедуры, обучать, прогнозировать, но сначала нужно вызвать ее метод compile.
1 | loaded_model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) |
В следующей статье я расскажу как сохранять рассчитанные веса модели в процессе обучения.