自定义损失功能与默认值不同

时间:2017-05-31 21:38:07

标签: tensorflow keras loss

我试图了解如何构建自定义丢失函数,我尝试的第一件事是重新实现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)。

0 个答案:

没有答案