torch.nn.functional.kl_div
- torch.nn.functional.kl_div(input, target, size_average=None, reduce=None, reduction='mean', log_target=False)[源代码]
-
计算KL散度损失值。
详情请参阅
KLDivLoss
。- 参数
-
-
输入 (Tensor) – 任意形状的张量,以对数概率形式表示。
-
target (Tensor) – 与输入相同形状的张量。关于目标的具体含义,请参见
log_target
。 -
size_average (bool, optional) – 已弃用(请参见
reduction
)。默认情况下,损失值会在批次中的每个损失元素上进行平均计算。需要注意的是,对于某些损失函数,每个样本包含多个损失元素。如果将字段size_average
设置为False
,则损失值会针对每个小批量进行求和。当参数 reduce 为False
时,此设置会被忽略。默认值:True
-
reduce (bool, optional) – 已弃用(请参见
reduction
)。默认情况下,损失值会根据size_average
参数在每个小批量中进行平均或求和。当reduce
为False
时,返回每批元素的单独损失值,并忽略size_average
设置。默认值:True
-
reduction (str, 可选) – 指定要应用于输出的缩减方式:
'none'
|'batchmean'
|'sum'
|'mean'
. 具体来说:'none'
: 不进行任何缩减操作;'batchmean'
: 输出总和除以批次大小;'sum'
: 对输出求和;'mean'
: 输出除以元素数量。默认值:'mean'
-
log_target (bool) – 一个标志,表示
target
是否在对数空间中传递。为了防止显式计算log
导致的数值问题,建议将某些分布(如softmax
)以对数形式传递。默认值:False
-
- 返回类型
注意
size_average
和reduce
正在被弃用。在此期间,指定这两个参数中的任意一个将覆盖reduction
。警告
reduction
='mean'
不会返回真正的 KL 散度值,请使用与 KL 数学定义一致的reduction
='batchmean'
。