Shortcuts

torch.nn.functional.kl_div

torch.nn.functional.kl_div(input, target, size_average=None, reduce=None, reduction='mean', log_target=False)[源代码]

计算KL散度损失。

参考 - Kullback-Leibler 散度损失

详情请参见 KLDivLoss

Parameters
  • 输入 (张量) – 以对数概率表示的任意形状的张量。

  • 目标 (张量) – 与输入形状相同的张量。请参阅 log_target 以了解目标的解释。

  • size_average (布尔值, 可选) – 已弃用(参见 reduction)。默认情况下, 损失在批次中的每个损失元素上进行平均。请注意,对于某些损失,每个样本可能有多个元素。如果字段 size_average 设置为 False,则损失将改为对每个小批次进行求和。当 reduce 为 False 时忽略。默认值:True

  • reduce (bool, 可选) – 已弃用(参见 reduction)。默认情况下,损失会根据 size_average 的设置在每个小批次中对观测值进行平均或求和。当 reduceFalse 时,返回每个批次元素的损失,并忽略 size_average。默认值:True

  • reduction (str, 可选) – 指定应用于输出的reduction方式: 'none' | 'batchmean' | 'sum' | 'mean'. 'none': 不进行reduction 'batchmean': 输出的和将除以batchsize 'sum': 输出将被求和 'mean': 输出将除以输出中的元素数量 默认值: 'mean'

  • log_target (bool) – 一个标志,指示是否在日志空间中传递 target。 建议将某些分布(如 softmax) 在日志空间中传递,以避免由于显式 log 引起的数值问题。 默认值:False

Return type

张量

注意

size_averagereduce 正在被弃用, 与此同时,指定这两个参数中的任何一个都将覆盖 reduction

警告

reduction = 'mean' 不会返回真实的KL散度值,请使用 reduction = 'batchmean',这与KL数学定义一致。

优云智算