torch.nn.functional.ctc_loss
-
torch.nn.functional.ctc_loss(log_probs, targets, input_lengths, target_lengths, blank=0, reduction='mean', zero_infinity=False)[source] -
Вычисляет функцию потерь Connectionist Temporal Classification.
Подробнее см. в
CTCLoss.Примечание
В некоторых случаях при передаче тензоров на устройстве CUDA и использовании CuDNN этот оператор может выбрать недетерминированный алгоритм для повышения производительности. Если это нежелательно, можно попытаться сделать операцию детерминированной (возможно, ценой производительности), задав
torch.backends.cudnn.deterministic = True. Подробнее см. в разделе Воспроизводимость.Примечание
При передаче тензоров на устройстве CUDA эта операция может выдавать недетерминированные градиенты. Подробнее см. в разделе Воспроизводимость.
- Параметры:
-
-
log_probs (Tensor) – или , где
C = number of characters in alphabet including blank,T = input lengthиN = batch size. Логарифмированные вероятности выходов (например, полученные с помощьюtorch.nn.functional.log_softmax()). -
targets (Tensor) – или
(sum(target_lengths)). Может быть пустым тензором, если все элементы вtarget_lengthsравны нулю. Во втором формате предполагается, что целевые последовательности объединены. - input_lengths (Tensor) – или . Длины входных последовательностей (каждая должна быть )
- target_lengths (Tensor) – или . Длины целевых последовательностей
- blank (int, необязательно) – Метка пустого символа. По умолчанию .
-
reduction (str, необязательно) – Определяет редукцию, применяемую к выходным данным:
'none'|'mean'|'sum'.'none': редукция не применяется,'mean': выходные значения функции потерь делятся на длины целевых последовательностей, после чего вычисляется среднее по пакету,'sum': выходные значения суммируются. По умолчанию:'mean' -
zero_infinity (bool, необязательно) – Обнулять ли бесконечные значения функции потерь и связанные с ними градиенты. По умолчанию:
False. Бесконечные значения функции потерь обычно возникают, когда входные последовательности слишком короткие для выравнивания с целевыми последовательностями.
-
log_probs (Tensor) – или , где
- Тип возвращаемого значения:
Пример:
>>> log_probs = torch.randn(50, 16, 20).log_softmax(2).detach().requires_grad_() >>> targets = torch.randint(1, 20, (16, 30), dtype=torch.long) >>> input_lengths = torch.full((16,), 50, dtype=torch.long) >>> target_lengths = torch.randint(10, 30, (16,), dtype=torch.long) >>> loss = F.ctc_loss(log_probs, targets, input_lengths, target_lengths) >>> loss.backward()
© 2026, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://docs.pytorch.org/docs/2.14/generated/torch.nn.functional.ctc_loss.html