在Keras中,如果您需要一个带有附加参数的自定义损耗,我们可以像https://datascience.stackexchange.com/questions/25029/custom-loss-function-with-additional-parameter-in-keras中提到的那样使用它
def penalized_loss(noise):
def loss(y_true, y_pred):
return K.mean(K.square(y_pred - y_true) - K.square(y_true - noise), axis=-1)
return loss
当我训练这个模型时,上面的方法是有效的。然而,一旦模型被训练,我就很难加载模型。当我尝试在如下的加载模型中使用custom_objects参数时
model = load_model(modelFile, custom_objects={'penalized_loss': penalized_loss} )
它抱怨ValueError: Unknown loss function:loss
是否有任何方法可以将损失函数作为custom_objects
中的自定义损失之一传入?据我所知,在加载模型调用期间,内部函数不在命名空间中。是否有更简单的方法加载模型或使用带有附加参数的自定义损耗
你可以试试这个:
(在当前“py”文件中定义了“惩罚损失”函数之后)。
是的,有!custom_objects需要您用作损失函数的确切函数(在您的案例中是内部函数):
不幸的是,keras不会在模型中存储噪音的值,因此需要手动将其输入load_model函数。
相关问题 更多 >
编程相关推荐