我试图为不同的类别分配不同的权重,所以我修改了损失标准,如下:
我必须将权重张量转换为两倍的torch.DoubleTensor(weight)
,因为我的model
已移至double()
。我做对了吗?
weights = [0.4,0.8,1.0]
class_weights = torch.DoubleTensor(weights).cuda()
criterion = nn.CrossEntropyLoss(weight=class_weights)
答案 0 :(得分:0)
根据documentation,weight
的{{1}}参数应为:
砝码(张量,可选)–赋予每个班级的手动缩放砝码。如果给出,则必须为C的张量。
我假设您有3个班级CrossEntropyLoss
。顺便说一句,您确定您的模型已移至(C=3)
吗?否则,您应该更喜欢使用double()
。例如,
FloatTensor
否则,您的示例看起来还可以!