在我的项目中,负例远远多于正例,所以我想给正例更大的权重。我的目标是:
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乘以根据相应的标签对中的值进行加权,然后取平均值。weightslosseslosses