我试图了解如何构建自定义丢失函数,我尝试的第一件事是重新实现keras中的binary_crossentropy函数。 在我的代码中,如果我这样做:
model.compile(Adam(lr=learning_rate), loss=losses.binary_crossentropy, metrics=['accuracy'])
该模型编译好并且在第一个时期内快速训练达到超过95%的准确度并且损失0.2
当我创建一个基本上复制loss.binary_crossentropy的自定义损失函数时:
def custom_loss(y_true,y_pred):
return K.mean(K.binary_crossentropy(y_pred, y_true), axis=-1)
然后:
model.compile(Adam(lr=learning_rate), loss=custom_loss, metrics=['accuracy'])
当我适合时,损失相当高(0.65)且精度低(0.47)。两种情况下的拟合程序和数据是相同的,所以我似乎没有正确地声明我的损失函数。 我正在使用最新版本的keras和tensorflow后端,我的模型是一个简单的vgg16完全卷积模型(fcn 32)。