【发布时间】:2018-03-15 09:47:39
【问题描述】:
我正在尝试将 u-net 与 keras 实现一起使用,我正在使用以下 repo https://github.com/zhixuhao/unet 效果很好,但我的问题是二分类问题,所以我想将准确度指标设置为jaccard,还有损失函数
我尝试定义函数:
def Jac(y_true, y_pred):
y_pred_f = K.flatten(K.round(y_pred))
y_true_f = K.flatten(y_true)
num = K.sum(y_true_f * y_pred_f)
den = K.sum(y_true_f) + K.sum(y_pred_f) - num
return num / den
并在编译中调用它:
model.compile(optimizer = Adam(lr = 1e-4), loss = ['binary_crossentropy'], metrics = [Jac])
当我这样做时,每次迭代中的 jaccard 精度都会降低,直到达到零!
有什么解释为什么会这样吗??
P.S:骰子也会发生同样的事情。
P.S:输出层是conv 1 * 1,带有sigmoid激活函数
更新:
附上keras中二进制精度的原始实现:
def binary_accuracy(y_true, y_pred):
return K.mean(K.equal(y_true, K.round(y_pred)), axis=-1)
而且我可以看到它还使用舍入来获得输出预测。
【问题讨论】:
标签: python machine-learning deep-learning keras image-segmentation