当我使用交叉熵损失作为损失函数时,我得到的尺寸超出了范围误差。
这是我的代码:
self.ce = nn.CrossEntropyLoss()
def forward(self, pred, y):
loss = 0
for w_, p_, y_ in zip(self.weights, pred, y):
loss += w_ * self.ce(p_, y_)
return loss
当我运行此代码时:
the value of p_:tensor(1.00000e-02 *[-0.7625, 5.8737], device='cuda:0')
the value of w_:tensor(1., device='cuda:0')
the value of y_:tensor(0, device='cuda:0')
答案 0 :(得分:0)
对于交叉熵,标签的数量应与预测的数量相同。
在您的特定情况下,y_和p_的尺寸应匹配,因为y_是0维标量,p_是1x2。