作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经建立了一个用于图像分割的 Keras 模型(U-Net)。然而,在我的样本中,一些错误分类(区域)并不那么重要,而其他则至关重要,所以我想为它们分配更高的损失函数权重。更复杂的是,我希望一些错误分类(第 1 类而不是第 2 类)具有非常高的惩罚,而反向(第 2 类而不是 1 类)不应该受到那么多的惩罚。
在我看来,我需要使用加权分类交叉熵的总和(跨所有像素),但我能找到的最好的是 this :
def w_categorical_crossentropy(y_true, y_pred, weights):
nb_cl = len(weights)
final_mask = K.zeros_like(y_pred[:, 0])
y_pred_max = K.max(y_pred, axis=1)
y_pred_max = K.reshape(y_pred_max, (K.shape(y_pred)[0], 1))
y_pred_max_mat = K.cast(K.equal(y_pred, y_pred_max), K.floatx())
for c_p, c_t in product(range(nb_cl), range(nb_cl)):
final_mask += (weights[c_t, c_p] * y_pred_max_mat[:, c_p] * y_true[:, c_t])
return K.categorical_crossentropy(y_pred, y_true) * final_mask
最佳答案
您可以使用权重图(如 U-Net paper 中所建议的)。在这些权重图中,您可以对具有更多权重或更少权重的区域进行加权。这是一些伪代码:
loss = compute_categorical_crossentropy()
weighted_loss = loss * weight_map # using element-wise multiplication
关于keras - 如何在 Keras 的 FCN (U-Net) 上使用加权分类交叉熵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43968028/
我是一名优秀的程序员,十分优秀!