tensorflow - 如何删除使用 add_loss() 添加的损失

标签 tensorflow keras

如果我制作一个模型,然后使用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/

相关文章:

python - 改变批量大小的 Tensorflow 数据集计算训练期间的测试损失

python - 如何处理UserWarning : Converting sparse IndexedSlices to a dense Tensor of unknown shape

linux - 如何在后台运行 Keras、tensorflow 程序并保留所有日志?

python - 导入错误: `load_model` requires h5py when loading hdf5

python - 没有 Gym 的 Tensorflow 强化学习

TensorFlow:无法创建 cudnn 句柄:CUDNN_STATUS_INTERNAL_ERROR 但没有其他 TF 实例正在运行

python - 在 CPU 上运行 tf.slim 评估循环

python - 在 Keras 中使用 `predict` 以给定的相同顺序预测一维数组

python - 回归精度

machine-learning - 嵌入层和密集层有什么区别?