我正在使用Mask RCNN训练一个模型;它在每个时期后将模型保存为mask_rcnn_building_cfg_0001.h5 (数字对应时期编号)。我使用预先训练好的权重进行转移学习,效果很好。但现在我想使用我自己训练的模型来进一步训练,因为它更优化。在代码库中,有这一部分:
callbacks = [
keras.callbacks.TensorBoard(log_dir=self.log_dir,
histogram_freq=0, write_graph=True, write_images=False),
keras.callbacks.ModelCheckpoint(self.checkpoint_path,
verbose=0, save_weights_only=True),
]所以通常我必须能够调用model.load_weights('mask_rcnn_building_cfg_0001.h5', by_name=True, exclude=["mrcnn_class_logits", "mrcnn_bbox_fc", "mrcnn_bbox", "mrcnn_mask"])
并使用保存的模型恢复训练,但训练不开始。但是,相同的load_weights()函数适用于从互联网下载的预训练模型,并且模型继续训练。
现在,我应该如何设置模型参数,以便在每个时期之后保存权重,以便在进一步的训练中用作预先训练的权重?我最好的猜测是我必须以某种方式从mask_rcnn_building_cfg_0001.h5中排除输出层,但不确定hw是否能做到这一点。
发布于 2021-06-24 15:33:11
checkpoint_path = "training_1/cp.ckpt"
checkpoint_dir = os.path.dirname(checkpoint_path)
# Create a callback that saves the model's weights
cp_callback = tf.keras.callbacks.ModelCheckpoint(filepath=checkpoint_path,
save_weights_only=True,
verbose=1)
# Loads the weights
model.load_weights(checkpoint_path)有关保存和加载模型的完整指南,请参阅Tensorflow文档。请找到here。
https://stackoverflow.com/questions/68064727
复制相似问题