keras - 自定义损失 - keras
问题描述
以下两个模型/编译的行为不同:
def custom_loss(y_true, y_pred):
return keras.losses.binary_crossentropy(y_true, y_pred)
optimizer = Adam(lr=5e-3)
model.compile(loss=custom_loss, optimizer=optimizer, metrics=['accuracy'])
和:
optimizer = Adam(lr=5e-3)
model.compile(loss=keras.losses.binary_crossentropy, optimizer=optimizer, metrics=['accuracy'])
可能是什么原因?
解决方案
如果您实现自定义二元交叉熵损失,您还应该指定正确的准确度指标。这是因为如果您使用 Keras 的二元交叉熵,那么 Keras 会自动调整要使用的准确度指标(在二元准确度和分类准确度之间)。
如果您使用自定义损失,则不会发生这种情况,然后 Keras 将默认为分类准确度,这实际上是错误的,会产生不正确的准确度值。例如:
model.compile(loss=custom_loss, optimizer=optimizer, metrics=['binary_accuracy'])
推荐阅读
- javascript - Angular7:服务工作者没有按预期运行
- mysql - 如何在mysql中的varchar变量中进行自动递增
- sql - 看不懂结果
- javascript - 不使用反应状态时对表数据进行排序
- php - Laravel 5.7 gRPC 集成
- javascript - React Tutorial 历史地图(step、move)
- autodesk-forge - Autodisk BIM360 Account Admin 端点是否支持三腿令牌?
- python - 从同一页面中的多个表单获取用户输入
- python - 具有 5 个未知参数的最小二乘函数
- r - Rmarkdown:如何保存当前输出并显示代码但不运行?