使用NLLloss加权损失如何在Pytorch中定义良好的损失

时间:2019-03-08 07:25:48

标签: pytorch loss-function

我有一个非常不平衡的数据,其权重在[0.0000000012,1]范围内,为了使用加权的NLLloss,如果直接应用这些极小的值权重,则会得到非常小的损失,所以如果我希望获得与没有重量的情况相同的指标。分配权重的策略是什么? 换句话说,1.我的体重应该是什么样子(例如,体重全部> 0等) 2.如果使用加权的NLLloss,对于损失,是否需要乘以一个因子来获得相同的表示形式(没有权重)?

一个例子:

import torch
import torch.nn as nn
log_prob = torch.tensor([[-0.0141, -4.2669]])
target = torch.tensor([0])
criterion = nn.NLLLoss()

criterion(log_prob, target)

输出:tensor(0.0141)

log_prob = torch.tensor([[-0.0141, -4.2669]])
target = torch.tensor([0])
weight = torch.tensor([0.00009, 0.99991])
criterion = nn.NLLLoss(weight=weight,  reduction='sum')

criterion(log_prob, target)

退出:tensor(1.2690e-06)

因此,在第二种情况下,由于损失值已经很小,如何知道我的网络已经过良好训练。 另外,如果使用加权的NLLloss,学习率的值也会受到影响吗?如果可以,如何设置学习率值

谢谢

0 个答案:

没有答案