在我的项目中,负例远远多于正例,所以我想给正例更大的权重。我的目标是:
loss = 0.0
if y_label==1:loss += 100 * cross_entropy
else:loss += cross_entropy
如何在张量流中实现这一点[?]
在我的项目中,负例远远多于正例,所以我想给正例更大的权重。我的目标是:
loss = 0.0
if y_label==1:loss += 100 * cross_entropy
else:loss += cross_entropy
如何在张量流中实现这一点[?]
让losses
成为您批次中示例的损失值的向量(rank-1 张量)。并设y
为相应标签的向量。然后,您可以通过
weights = w_pos*y + w_neg*(1.0-y)
loss = tf.reduce_mean(weights*losses)
在这里,w_pos
和w_neg
是常量标量值(w_pos=100.0
在w_neg=1.0
您的示例中)。然后,该向量weights
具有一个值,w_pos
例如标签等于 1 和等于 0 的示例。然后将元素w_neg
乘以根据相应的标签对中的值进行加权,然后取平均值。weights
losses
losses