【发布时间】:2018-04-13 09:15:12
【问题描述】:
训练数据集包含两个类 A 和 B,我们在目标标签中分别表示为 1 和 0。出标签数据严重偏向于类0,它占据了大约 95% 的数据,而我们的类 1 仅占 5%。在这种情况下我们应该如何构建我们的损失函数?
我发现 Tensorflow 有一个可以与权重一起使用的函数:
tf.losses.sigmoid_cross_entropy
weights充当损失系数。如果提供了标量,则损失只是按给定值缩放。
听起来不错。我将权重设置为 2.0,以提高损失并更多地惩罚错误。
loss = loss_fn(targets, cell_outputs, weights=2.0, label_smoothing=0)
但是,不仅损失没有下降,而且数据集的最终准确率略有下降。好的,也许我误解了,它应该是
不用说,在同一数据集上训练的同一网络,但损失权重为 0.3,在 Torch / PyTorch 中可将损失显着降低 10 倍。
谁能解释一下如何在 Tensorflow 中使用损失权重?
【问题讨论】:
标签: python tensorflow