自定损失 - keras

问题描述 投票:0回答:1

以下两个模型/编译的行为不同:

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 loss
1个回答
1
投票

如果实现自定义二进制交叉熵丢失,则还应指定正确的准确度指标。这是因为如果您使用Keras的二进制交叉熵,那么Keras将自动调整要使用的精度度量(在二进制和分类精度之间)。

如果您使用自定义丢失,则不会发生这种情况,然后Keras将默认为分类精度,这实际上是错误的,会产生不正确的精度值。例如:

model.compile(loss=custom_loss, optimizer=optimizer, metrics=['binary_accuracy'])
© www.soinside.com 2019 - 2024. All rights reserved.