如何在Keras自定义混合损失中独立监控MSE与二元交叉熵指标?
独立监控自定义损失各组成部分的方法
你可以通过自定义Keras指标函数来分别监控MSE和二元交叉熵这两个损失组成部分,具体步骤如下:
- 定义两个单独的指标函数,分别对应数值部分的MSE和分类部分的二元交叉熵:
from tensorflow.keras.losses import mean_squared_error, binary_crossentropy def numerical_mse(y_true, y_pred): # 提取数值数据对应的维度计算MSE return mean_squared_error(y_true[:, 0], y_pred[:, 0]) def binary_ce_metric(y_true, y_pred): # 提取二元分类数据对应的维度计算交叉熵 return binary_crossentropy(y_true[:, 1], y_pred[:, 1])
- 在模型编译时,将这两个自定义指标加入
metrics参数列表:
model.compile( optimizer='adam', # 替换为你实际使用的优化器 loss=loss, # 你原来的自定义损失函数 metrics=[numerical_mse, binary_ce_metric] )
- 训练模型时,训练日志会实时显示这两个指标的数值,同时训练完成后,你可以从
history对象中提取对应的数据做后续分析:
history = model.fit(x_train, y_train, validation_split=0.2, epochs=10) # 查看训练集的MSE指标 print(history.history['numerical_mse']) # 查看验证集的二元交叉熵指标 print(history.history['val_binary_ce_metric'])
这样就能在训练过程中独立监控两个损失组成部分的变化情况了。
内容的提问来源于stack exchange,提问作者Darren Rahnemoon
相关产品推荐
相关产品推荐

