我正在使用 Keras 使用 Unet 进行边界/轮廓检测。当我使用二元交叉熵作为损失时,损失随着时间的推移而减少,正如预期的那样,预测边界看起来很合理
但是,我已经尝试使用不同 LR 为 Dice 自定义损失,但都没有效果。
smooth = 1e-6
def dice_coef(y_true, y_pred):
y_true_f = K.flatten(y_true)
y_pred_f = K.flatten(y_pred)
intersection = K.sum(y_true_f * y_pred_f)
return (2. * intersection + smooth) / (K.sum(y_true_f) + K.sum(y_pred_f) + smooth)
def dice(y_true, y_pred):
return 1-dice_coef(y_true, y_pred)
损失值没有改善。也就是说,它会显示类似
loss: nan - dice: .9607 - val_loss: nan - val_dice: .9631
我得到了 dice
和 val_dice
的损失和值的 NaN,随着 epoch 的迭代几乎没有变化。这与我为 LR 使用什么无关,无论是 .01 到 1e-6
训练图像/标签的尺寸看起来像 N x H x W x 1,其中 N 是图像的数量,H/W 是每个图像的高度/宽度
有人可以帮忙吗?