torch.logsumexp

torch.logsumexp(input, dim, keepdim=False, *, out=None)

在给定维度 dim 上,返回 input 张量中每行指数值之和的对数。该计算过程是数值稳定的。

对于由dim确定的求和索引$j$以及其他索引$i$,结果为

$\text{logsumexp}(x)_{i} = \log \sum_j \exp(x_{ij})$

如果 keepdimTrue,则输出张量与输入张量大小相同,除了在 dim 指定的维度上其大小为 1。否则,dim 维度会被挤压(参见 torch.squeeze()),导致输出张量比输入少 1 (或 len(dim))个维度。

参数
  • input (Tensor) – 需要输入的张量。

  • dim (int元组 of ints, 可选) – 要减少的维度。如果为 None,则所有维度都会被减少。

  • keepdim (bool) – 是否在输出张量中保留dim维度。

关键字参数

out (Tensor, 可选) – 指定输出张量。

示例:

>>> a = torch.randn(3, 3)
>>> torch.logsumexp(a, 1)
tensor([1.4907, 1.0593, 1.5696])
>>> torch.dist(torch.logsumexp(a, 1), torch.log(torch.sum(torch.exp(a), 1)))
tensor(1.6859e-07)
本页目录