Keras-保存和恢复模型
转载自:
1,share的内容
code to create the model, and
the trained weights, or parameters, for the model
2,ways
There are different ways to save TensorFlow models—depending on the API you’re using
3,Checkpoint callback usage
3.1,以callback方式触发对checkpoint的在fit过程中的记录
checkpoint_path = "training_1/cp.ckpt"checkpoint_dir = os.path.dirname(checkpoint_path)
Create checkpoint callback
cp_callback = tf.keras.callbacks.ModelCheckpoint(checkpoint_path, save_weights_only=True,verbose=1)model = create_model()model.fit(train_images, train_labels, epochs = 10, validation_data = (test_images,test_labels),callbacks = [cp_callback]) # pass callback to training
3.2,检查目录
! ls {checkpoint_dir}
3.3,找出最近的
latest=tf.train.latest_checkpoint(checkpoint_dir)
4,恢复至最近的checkpoint
model = create_model()model.load_weights(latest)#用于仅保存了权重时loss, acc = model.evaluate(test_images, test_labels)print("Restored model, accuracy: {:5.2f}%".format(100*acc))tf.train.latest_checkpoint(checkpoint_dir)
5,手动save和restore
Save the weights
model.save_weights(’./checkpoints/my_checkpoint’)
Restore the weights
model = create_model()
model.load_weights(’./checkpoints/my_checkpoint’)
loss,acc = model.evaluate(test_images, test_labels)
print(“Restored model, accuracy: {:5.2f}%”.format(100*acc))
6,保存和恢复整个模型
6.1,save
contains the weight values, the model’s configuration, and even the optimizer’s configuration (depends on set up). This allows you to checkpoint a model and resume training later—from the exact same state—without access to the original code
model = create_model()model.fit(train_images, train_labels, epochs=5)# Save entire model to a HDF5 file
model.save('my_model.h5')
6.2,恢复
new_model = keras.models.load_model('my_model.h5')
new_model.summary()
7,keras如何保存和恢复模型
7.1,创建模型
model = create_model()model.fit(train_images, train_labels, epochs=5)
7.2,保存模型
Keras saves models by inspecting the architecture. Currently, it is not able to save TensorFlow optimizers (from tf.train). When using those you will need to re-compile the model after loading, and you will lose the state of the optimizer.
saved_model_path = tf.contrib.saved_model.save_keras_model(model, "./saved_models")!ls -l saved_models
7.3,恢复模型
new_model = tf.contrib.saved_model.load_keras_model(saved_model_path)
new_model.summary()
7.4,编译模型(因为不保存模型的优化器)
The model has to be compiled before evaluating.
This step is not required if the saved model is only being deployed.
new_model.compile(optimizer=tf.keras.optimizers.Adam(),
loss=tf.keras.losses.sparse_categorical_crossentropy,
metrics=['accuracy'])
Evaluate the restored model.
loss, acc = new_model.evaluate(test_images, test_labels)
print("Restored model, accuracy: {:5.2f}%".format(100*acc))