Keras保存模型、checkpoint

1.Keras保存训练好的模型

1) 使用model.save(filepath)将Keras模型和权重保存在一个HDF5文件中,该文件将包含:

  • 模型的结构,以便重构该模型
  • 模型的权重
  • 训练配置(损失函数,优化器等)
  • 优化器的状态,以便于从上次训练中断的地方开始

使用keras.models.load_model(filepath)来重新实例化你的模型,如果文件中存储了训练配置的话,该函数还会同时完成模型的编译

from keras.models import load_model

model.save('my_model.h5')  # creates a HDF5 file 'my_model.h5'
del model  # deletes the existing model

# returns a compiled model
# identical to the previous one
model = load_model('my_model.h5')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

2) 只保存模型的结构,而不包含其权重或配置信息:

# save as JSON
json_string = model.to_json()

# save as YAML
yaml_string = model.to_yaml()


# model reconstruction from JSON:
from keras.models import model_from_json
model = model_from_json(json_string)

# model reconstruction from YAML
model = model_from_yaml(yaml_string)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

3) 只保存模型的权重

model.save_weights('my_model_weights.h5')

# 初始化一个完全相同的模型
model.load_weights('my_model_weights.h5')

# 加载权重到不同的网络结构(有些层一样)中,例如fine-tune
# 或transfer-learning,可以通过层名字来加载模型:

model.load_weights('my_model_weights.h5', by_name=True)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

2.Keras保存checkpoint

from keras.callbacks import ModelCheckpoint

checkpointer = ModelCheckpoint(filepath="checkpoint-{epoch:02d}e
-val_acc_{val_acc:.2f}.hdf5", 
save_best_only=True, verbose=1,  period=50)

model.fit(data, labels, epochs=10, batch_size=32,
   callbacks=[checkpointer])    #callbacks为一个list,可有多个回调函数
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • filepath:checkpoint保存路径,上面加入了变量值来命名

  • verbose:信息展示模式,0或1

  • save_best_only:当设置为True时,将只保存在验证集上性能最好的模型,设为True避免保存过多不必要的模型

  • period:CheckPoint之间的间隔的epoch数,可避免训练前期保存不必要的模型

保存的checkpoint,可以直接作为 1. 1) 中保存的model调用,用来分类

model = load_model('checkpoint-05e-val_acc_0.58.hdf5')
  • 1

也可以作为继续训练之前加载权重

model.load_weights('checkpoint-05e-val_acc_0.58.hdf5')
  • 1
个人分类:  Keras
  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Keras是一个深度学习框架,它提供了保存最好模型的功能。保存最好的模型非常重要,因为在训练过程中不同的参数可能会导致模型表现不同,我们需要找到在验证集上表现最好的模型进行预测。 要保存最好的模型,我们需要使用Keras的`ModelCheckpoint`回调函数。这个函数允许我们定义一些参数来保存最好的模型。常用的参数包括`monitor`,`mode`和`filepath`。 首先,我们需要设置`monitor`参数来监测模型性能的指标,如验证集的准确率或损失。我们可以选择设置`mode`为"min"或"max",具体取决于选择的监测指标是损失还是准确率。如果监测指标是损失,那么`mode`应该设置为"min";如果监测指标是准确率,那么`mode`应该设置为"max"。 接下来,我们需要设置`filepath`参数来保存最好的模型的文件路径和名称。可以使用占位符例如`{epoch}`和`{val_accuracy}`在文件名中动态地添加有关模型的信息,如训练轮次和验证准确率。 当定义好`ModelCheckpoint`回调函数后,我们可以将其作为参数传递给`fit`函数,在训练过程中自动保存最好的模型。 以下是一个示例代码,展示了如何使用Keras保存最好的模型: ```python from keras.callbacks import ModelCheckpoint # 定义ModelCheckpoint回调函数 checkpoint = ModelCheckpoint(filepath='best_model.h5', monitor='val_accuracy', mode='max', save_best_only=True) # 训练模型时使用ModelCheckpoint回调函数 model.fit(x_train, y_train, validation_data=(x_val, y_val), callbacks=[checkpoint]) # 载入已保存的最好模型 model.load_weights('best_model.h5') ``` 使用上述代码,训练过程中会自动保存验证准确率最高的模型,并保存为"best_model.h5"文件。最后,我们可以通过`load_weights`函数来加载已保存的最好模型。 通过保存最好的模型,我们可以避免在训练过程中遗失表现良好的模型,并在下一次需要进行预测时使用最佳模型

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值