本文简要介绍python语言中 torch.nn.CrossEntropyLoss
的用法。
用法:
class torch.nn.CrossEntropyLoss(weight=None, size_average=None, ignore_index=- 100, reduce=None, reduction='mean', label_smoothing=0.0)
weight(Tensor,可选的) -给每个类一个手动重新调整的权重。如果给定,则必须是大小为
C
的张量size_average(bool,可选的) -已弃用(请参阅
reduction
)。默认情况下,损失是批次中每个损失元素的平均值。请注意,对于某些损失,每个样本有多个元素。如果字段size_average
设置为False
,则会对每个小批量的损失求和。当reduce
为False
时忽略。默认值:True
ignore_index(int,可选的) -指定一个被忽略且不影响输入梯度的目标值。当
size_average
为True
时,损失是在非忽略目标上的平均值。请注意,ignore_index
仅在目标包含类索引时适用。reduce(bool,可选的) -已弃用(请参阅
reduction
)。默认情况下,根据size_average
对每个小批量的观察结果进行平均或求和。当reduce
是False
时,返回每个批次元素的损失并忽略size_average
。默认值:True
reduction(string,可选的) -指定要应用于输出的缩减:
'none'
|'mean'
|'sum'
。'none'
:不应用减少,'mean'
:取输出的加权平均值,'sum'
:输出将被求和。注意:size_average
和reduce
正在被弃用,同时,指定这两个参数中的任何一个都将覆盖reduction
。默认值:'mean'
label_smoothing(float,可选的) -[0.0, 1.0] 中的浮点数。指定计算损失时的平滑量,其中 0.0 表示不平滑。目标成为原始基本事实和均匀分布的混合体,如 Rethinking the Inception Architecture for Computer Vision 中所述。默认值: 。
该标准计算输入和目标之间的交叉熵损失。
在使用
C
类训练分类问题时很有用。如果提供,可选参数weight
应该是一维Tensor
,为每个类分配权重。当你有一个不平衡的训练集时,这特别有用。input
预计将包含每个类的原始未标准化分数。input
必须是大小为 或 的张量,对于K
维情况, 。后者对于更高维度的输入很有用,例如计算 2D 图像的交叉熵损失 per-pixel。此标准预期的
target
应包含:ignore_index
,这个损失也接受这个类索引(这个索引可能不一定在类范围内)。这种情况下未减少的(即reduction
设置为'none'
)损失可以说明为: 范围内的类索引,其中 是类数;如果指定了其中
K
的 维案例。如果reduction
不是'none'
(默认'mean'
),那么 是输入, 是目标, 是权重, 是类数, 跨越小批量维度以及请注意,这种情况等效于
LogSoftmax
和NLLLoss
的组合。每个类别的概率;当每个小批量项目需要超过单个类的标签时很有用,例如混合标签、标签平滑等。这种情况下未减少的(即
reduction
设置为'none'
)损失可以说明为:其中
K
的 维案例。如果reduction
不是'none'
(默认'mean'
),那么 是输入, 是目标, 是权重, 是类数, 跨越小批量维度以及
注意
当
target
包含类索引时,此标准的性能通常更好,因为这允许优化计算。仅当每个小批量项目的单个类标签过于严格时,才考虑提供target
作为类概率。- 形状:
输入:
C = number of classes
或 与 在K
维损失的情况下。 其中目标:如果包含类索引,则形状为 ,其中每个值为 ,或者在 K-dimensional 丢失的情况下为 和 。如果包含类概率,则与输入的形状相同。
输出:如果
reduction
是'none'
,则在 K-dimensional 丢失的情况下使用 形状 或 。否则,标量。
例子:
>>> # Example of target with class indices >>> loss = nn.CrossEntropyLoss() >>> input = torch.randn(3, 5, requires_grad=True) >>> target = torch.empty(3, dtype=torch.long).random_(5) >>> output = loss(input, target) >>> output.backward() >>> >>> # Example of target with class probabilities >>> input = torch.randn(3, 5, requires_grad=True) >>> target = torch.randn(3, 5).softmax(dim=1) >>> output = loss(input, target) >>> output.backward()
参数:
相关用法
- Python torchrec.modules.crossnet.CrossNet用法及代码示例
- Python PyTorch CriteoIterDataPipe用法及代码示例
- Python PyTorch Collator用法及代码示例
- Python PyTorch ConvTranspose3d用法及代码示例
- Python PyTorch Conv1d用法及代码示例
- Python PyTorch CSVParser用法及代码示例
- Python PyTorch CosineAnnealingWarmRestarts.step用法及代码示例
- Python PyTorch ChannelShuffle用法及代码示例
- Python PyTorch CocoCaptions用法及代码示例
- Python PyTorch CSVDictParser用法及代码示例
- Python PyTorch ContinuousBernoulli用法及代码示例
- Python PyTorch Cityscapes用法及代码示例
- Python PyTorch ChainedScheduler用法及代码示例
- Python PyTorch Cauchy用法及代码示例
- Python PyTorch ConstantPad2d用法及代码示例
- Python PyTorch ComplexNorm用法及代码示例
- Python PyTorch ConvTranspose2d用法及代码示例
- Python PyTorch CppExtension用法及代码示例
- Python PyTorch Concater用法及代码示例
- Python PyTorch Compose用法及代码示例
- Python PyTorch Chi2用法及代码示例
- Python PyTorch ConstantLR用法及代码示例
- Python PyTorch Conv2d用法及代码示例
- Python PyTorch CosineSimilarity用法及代码示例
- Python PyTorch ConstantPad1d用法及代码示例
注:本文由纯净天空筛选整理自pytorch.org大神的英文原创作品 torch.nn.CrossEntropyLoss。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。