gpt4 book ai didi

python - Keras:如何加载具有两个输出和自定义损失函数的模型?

转载 作者:行者123 更新时间:2023-12-01 08:20:43 26 4
gpt4 key购买 nike

我训练了一个 Keras(带有 Tensorflow 后端)模型,该模型有两个带有自定义损失函数的输出。我需要帮助使用 custom_objects 参数从磁盘加载模型。

编译模型时,我使用了 loss 和 loss_weights 参数,如下所示:

losses = {
'output_layer_1':custom_loss_fn,
'output_layer_2':custom_loss_fn
}

loss_weights = {
'output_layer_1': 1.0,
'output_layer_2': 1.0
}

model.compile(loss=losses, loss_weights=loss_weights, optimizer=opt)

模型正在训练,没有任何问题。我保存模型如下:

model.save(model_path)

我在这里没有定义“custom_loss_fn”的原因是因为 custom_loss_fn 是在另一个自定义 Keras 层中定义的。

我的问题是如何加载在推理过程中保存到磁盘的模型。如果它是单个输出模型,我将使用 custom_objects 加载模型,如 stackoverflow 问题中所述:Loading model with custom loss + keras

model = keras.models.load_model(model_path, custom_objects={'custom_loss_fn':custom_loss_fn})

但是在我有两个输出、字典中定义的损失和损失权重以及自定义损失函数的情况下,如何扩展它?

换句话说,在 lossesloss_weights 定义为字典的情况下,应该如何填充 custom_objects

我正在使用 Keras v2.1.6 和 Tensorflow 后端 v1.8.0。

最佳答案

如果您可以在加载端重新编译模型,最简单的方法是仅保存权重:model.save_weights()。如果您想使用 save_model 并拥有自定义 Keras 层,请确保它们实现 get_config 方法(请参阅 this 引用)。至于没有梯度的操作,我在混合tensorflow和Keras时看到了这一点,而没有正确使用keras.backend函数,但如果没有模型代码本身,我无法提供更多帮助。

关于python - Keras:如何加载具有两个输出和自定义损失函数的模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54664338/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com