面对数据不均衡的问题,除了扩增数据集之外,一个方法可以重新定义loss值,让你注重的类别造成的损失更大一些。
在pytorch的框架里,加上一个不均衡的weight值是十分必要的。
比如
1类数据是0类数据的三倍
那么在最终分类时可能模型就直接把所有数据都分为1类。那么通过算loss值时加上一个weight权重,给样本量少的0加上一个较大的权重。可以缓解这种模型把数据全部分为1类的问题
具体代码为:
weight=torch.from_numpy(np.array([0.2,0.8])).float().cuda()
其中0.2和0.8分别是权重。(至于哪个对应标签0哪个对应标签1,诸位自己试试吧)
###################定义损失函数#############
criterion=nn.CrossEntropyLoss(weight=weight)