本文简要介绍python语言中 torch.nn.NLLLoss
的用法。
用法:
class torch.nn.NLLLoss(weight=None, size_average=None, ignore_index=- 100, reduce=None, reduction='mean')
weight(Tensor,可选的) -给每个类一个手动重新调整的权重。如果给定,它必须是大小为
C
的张量。否则,它被视为拥有所有的。size_average(bool,可选的) -已弃用(请参阅
reduction
)。默认情况下,损失是批次中每个损失元素的平均值。请注意,对于某些损失,每个样本有多个元素。如果字段size_average
设置为False
,则会对每个小批量的损失求和。当reduce
为False
时忽略。默认值:True
ignore_index(int,可选的) -指定一个被忽略且不影响输入梯度的目标值。当
size_average
为True
时,损失是在非忽略目标上的平均值。reduce(bool,可选的) -已弃用(请参阅
reduction
)。默认情况下,根据size_average
对每个小批量的观察结果进行平均或求和。当reduce
是False
时,返回每个批次元素的损失并忽略size_average
。默认值:True
reduction(string,可选的) -指定要应用于输出的缩减:
'none'
|'mean'
|'sum'
。'none'
:不应用减少,'mean'
:取输出的加权平均值,'sum'
:输出将被求和。注意:size_average
和reduce
正在被弃用,同时,指定这两个参数中的任何一个都将覆盖reduction
。默认值:'mean'
负对数似然损失。用
C
类训练分类问题很有用。如果提供,可选参数
weight
应该是一维张量,为每个类分配权重。当你有一个不平衡的训练集时,这特别有用。通过前向调用给出的
input
预计将包含每个类的log-probabilities。input
必须是大小为 或 的张量,对于K
维情况, 。后者对于更高维度的输入很有用,例如为 2D 图像计算 NLL 损失 per-pixel。通过在网络的最后一层添加
LogSoftmax
层,可以轻松地在神经网络中获得 log-probabilities。如果您不想添加额外的图层,您可以改用CrossEntropyLoss
。此损失预期的
target
应该是 范围内的类索引,其中C = number of classes
;如果指定了ignore_index
,这个损失也接受这个类索引(这个索引可能不一定在类范围内)。未减少的(即
reduction
设置为'none'
)损失可以说明为:其中
reduction
不是'none'
(默认'mean'
),那么 是输入, 是目标, 是权重, 是批量大小。如果- 形状:
输入:
C = number of classes
或 与 在K
维损失的情况下。 或 ,其中目标: 或 ,其中每个值为 ,或在 K-dimensional 丢失的情况下为 和 。
输出:如果
reduction
是'none'
,则在 K-dimensional 丢失的情况下使用 形状 或 。否则,标量。
例子:
>>> m = nn.LogSoftmax(dim=1) >>> loss = nn.NLLLoss() >>> # input is of size N x C = 3 x 5 >>> input = torch.randn(3, 5, requires_grad=True) >>> # each element in target has to have 0 <= value < C >>> target = torch.tensor([1, 0, 4]) >>> output = loss(m(input), target) >>> output.backward() >>> >>> >>> # 2D loss example (used, for example, with image inputs) >>> N, C = 5, 4 >>> loss = nn.NLLLoss() >>> # input is of size N x C x height x width >>> data = torch.randn(N, 16, 10, 10) >>> conv = nn.Conv2d(16, C, (3, 3)) >>> m = nn.LogSoftmax(dim=1) >>> # each element in target has to have 0 <= value < C >>> target = torch.empty(N, 8, 8, dtype=torch.long).random_(0, C) >>> output = loss(m(conv(data)), target) >>> output.backward()
参数:
相关用法
- Python PyTorch Normal用法及代码示例
- Python PyTorch Node.prepend用法及代码示例
- Python PyTorch frexp用法及代码示例
- Python PyTorch jvp用法及代码示例
- Python PyTorch cholesky用法及代码示例
- Python PyTorch vdot用法及代码示例
- Python PyTorch ELU用法及代码示例
- Python PyTorch ScaledDotProduct.__init__用法及代码示例
- Python PyTorch gumbel_softmax用法及代码示例
- Python PyTorch get_tokenizer用法及代码示例
- Python PyTorch saved_tensors_hooks用法及代码示例
- Python PyTorch positive用法及代码示例
- Python PyTorch renorm用法及代码示例
- Python PyTorch AvgPool2d用法及代码示例
- Python PyTorch MaxUnpool3d用法及代码示例
- Python PyTorch Bernoulli用法及代码示例
- Python PyTorch Tensor.unflatten用法及代码示例
- Python PyTorch Sigmoid用法及代码示例
- Python PyTorch Tensor.register_hook用法及代码示例
- Python PyTorch ShardedEmbeddingBagCollection.named_parameters用法及代码示例
- Python PyTorch sqrt用法及代码示例
- Python PyTorch PackageImporter.id用法及代码示例
- Python PyTorch column_stack用法及代码示例
- Python PyTorch diag用法及代码示例
- Python PyTorch skippable用法及代码示例
注:本文由纯净天空筛选整理自pytorch.org大神的英文原创作品 torch.nn.NLLLoss。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。