如果我制作一个模型,然后使用add_loss
:
model.add_loss(myLoss1(...))
后来想在同一模型上使用不同的损失,例如,我该如何删除 myLoss1
并将其替换为 myLoss2
?
我尝试了model.losses.clear()
,但这似乎没有效果。我知道我可以将权重保存到磁盘,用所需的损失重新制作模型并重新加载权重,但这似乎是一种黑客行为。
最佳答案
您可以使用现有模型的配置创建一个新模型,然后再次调用 add_loss()
以设置新的损失。恢复模型权重也是如此。
weights = model.get_weights()
# Instantiate model again to remove old loss
model = model.from_config(model.get_config())
model.set_weights(weights)
# Set new loss
model.add_loss(myLoss2(...))
(可选)您可能希望在开始使用新损失训练模型之前重置全局状态,但这取决于您的用例。
# For Tensorflow's Keras
tf.keras.backend.clear_session()
# For Standalone Keras
keras.backend.clear_session()
关于tensorflow - 如何删除使用 add_loss() 添加的损失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68821605/