ctc_loss = nn.CTCLoss()
log_probs = torch.randn(50, 16, 20).log_softmax(2)
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 = ctc_loss(log_probs.cpu(), targets, input_lengths, target_lengths)
loss.backward()
切記 loss = ctc_loss(log_probs.cpu(), targets, input_lengths, target_lengths),其中模型輸出的log_probs一定要放在cpu上,如果放在cuda上,那麼loss訓練過程中會下降的特別慢甚至不下降。