【发布时间】:2022-01-19 02:54:49
【问题描述】:
class crossentropy(nn.Module):
def __init__(self):
super(crossentropy, self).__init__()
def forward(self, y_1, y):
m = nn.Softmax(dim=1)
output = m(y_1)
loss = -1.0*torch.sum(y*torch.log(output))
l = torch.mean(loss)
return l
【问题讨论】:
-
有两种可能的情况,要么y或y_1的某些元素是NaN,要么输出的元素太接近0
-
无论如何,你应该使用LogSoftmax而不是取softmax的日志,这样可以避免第二种情况
-
m应在__init__中创建为self.m = ...。 -
您是否尝试过将您的
crossentropy类替换为标准类并查看是否仍然不起作用?
标签: python deep-learning pytorch cross-entropy