本文简要介绍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时忽略。默认值:Trueignore_index(int,可选的) -指定一个被忽略且不影响输入梯度的目标值。当
size_average为True时,损失是在非忽略目标上的平均值。reduce(bool,可选的) -已弃用(请参阅
reduction)。默认情况下,根据size_average对每个小批量的观察结果进行平均或求和。当reduce是False时,返回每个批次元素的损失并忽略size_average。默认值:Truereduction(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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。
