torch.nn.functional.nll_loss用法
torch.nn.functional.nll_loss
torch.nn.functional.nll_loss(input, target, weight=None, size_average=None,
ignore_index=- 100, reduce=None, reduction='mean')
负对数似然损失
input:(N,C)其中C表示分类的类别数,2D损失中(N,C,H,W),或者多维损失(N,C,d1,d2,...,dk)。input期望是一个对数的概率,所以之前的概率最好是对数形式,比如使用torch.nn.functional.log_softmax求预测的概率
target:(N), 其中的数值在【0,c-1】之间。对于k维度的损失来说形式为(N,d1,d2,...,dk)
weight:(tensor,optional),一个手动的标量给每个分类,如果有,是一个大小为C的张量
size_average:(bool,optional) ,默认下是True,在每个批处理中平均损失。如果是False,那就是对每个批处理的损失进行求和。弃用
ignore_index(int,optional),指定目标值不影响输入梯度,当时size_average=TRUE,损失在非忽略的目标上平均,默认-100
reduce(bool,optional)),默认情况下,根据size_average,每个minibatch的观察值平均或求和损失,当reduce为False时,将返回每个批处理元素的损失,并忽略size_average。默认为True,弃用
reduction(string,optional):指定要应用到输出的缩减,值为'none' | 'mean' | 'sum'。'none'表示不会降低, 'mean'表示求平均,'sum'表示输出求和,默认是mean
Example
input = torch.randn(3,5,requires_grad=True)
target = torch.tensor([1, 0, 4])
output = F.nll_loss(F.log_softmax(input), target)
output.backward()
https://pytorch.org/docs/stable/generated/torch.nn.functional.nll_loss.html?highlight=torch%20nn%20functional%20nll_loss#torch.nn.functional.nll_loss
https://pytorch.org/docs/stable/nn.functional.html