我知道torch.nn.CrossEntropyLoss(权重=?)参数“权重”意味着平衡来自不同类别的样本之间的不平衡,它是用于类别的参数,并且它具有类别数目的长度。那么,如果我想在计算损失时设置不同样本的权重,其中有样本数量的长度,我应该怎么做?ps:就像www.example.com中的“sample_weight”keras.Sequential.fit(sample_weight=?)尝试使用torch.nn.Parameter(),但似乎没有用;期待一些解决方案PLZ。
nx7onnlm1#
如果你想在交叉熵损失中使用样本权重,你需要像这样做:
entropy_loss = torch.nn.CrossEntropyLoss(reduction='none') loss = entropy_loss(output, target) loss = (loss*sample_weights).mean() loss.backward()
参见https://discuss.pytorch.org/t/per-class-and-per-sample-weighting/25530/4这假设你的样本权重是标准化的btw。
iibxawm42#
在学习中的每一步使用sample_weight
loss = criterion(outputs, batch_targets) weighted_loss = (loss * sample_weight).mean()
2条答案
按热度按时间nx7onnlm1#
如果你想在交叉熵损失中使用样本权重,你需要像这样做:
参见https://discuss.pytorch.org/t/per-class-and-per-sample-weighting/25530/4
这假设你的样本权重是标准化的btw。
iibxawm42#
在学习中的每一步使用sample_weight