【发布时间】:2020-01-15 23:31:02
【问题描述】:
我使用 TensorFlow 1.12 和 Keras 进行语义分割。我使用class_weight 参数向tf.keras.Model.fit() 提供权重向量(大小等于类数)。我想知道这是如何在内部工作的。我使用自定义损失函数(骰子损失和焦点损失等),并且在将权重输入到损失函数之前,不能将权重与预测或单热基础事实相乘,因为这不会产生任何影响感觉。我的损失函数输出一个标量值,因此它也不能与函数输出相乘。那么究竟在哪里以及如何考虑类权重呢?
我的自定义损失函数是:
def cross_entropy_loss(onehots_true, logits): # Inputs are [BATCH_SIZE, height, width, num_classes]
logits, onehots_true = mask_pixels(onehots_true, logits) # Removes pixels for which no ground truth exists, and returns shape [num_gt_pixels, num_classes]
return tf.losses.softmax_cross_entropy(onehots_true, logits)
【问题讨论】:
-
你检查过我的答案吗,如果你想要的话请告诉我
-
抱歉我反应迟了。你的回答很有帮助!我还是不明白
class_sample_weights是什么时候开始应用的,但是我还没有时间进一步探索源代码。
标签: tensorflow keras loss-function