为什么我们需要在Keras load_model函数中提及损失函数?

时间:2018-12-23 15:31:57

标签: python machine-learning keras loss-function

我使用自定义损失函数创建了Keras模型并保存了它。当我使用Keras load_model()函数重新加载经过训练的模型进行预测时,我不得不将自定义损失函数传递给custom_objects参数:

new_model=load_model('yolo_1.model',custom_objects={'custom_loss':custom_loss}) 

我的问题是,为什么我们必须在load_model()中提及自定义损失函数?我认为在预测过程中不需要损失函数。

1 个答案:

答案 0 :(得分:3)

这是因为include_optimizer方法的save参数默认设置为True。因此,将保存优化器以及损失函数,并在您使用load_model函数时加载它们。

但是,如果只想使用模型进行预测,则无需保存优化器,因此在保存模型时将include_optimizer设置为False

model.save('my_model.h5', include_optimizer=False)

这样,将不会保存优化器和使用的损失函数,因此,您无需指定加载模型时使用的自定义损失函数。