我有一个非常不平衡的数据,其权重在[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,学习率的值也会受到影响吗?如果可以,如何设置学习率值
谢谢