Questão FC331242
A analista Ana está implementando um script para deep learning utilizando o Python e o PyTorch. Considere o seguinte trecho do script de Ana: import torch import torch.nn.functiona
Linguagens de Programação
FGV · 2024
A analista Ana está implementando um script para deep learning utilizando o Python e o PyTorch. Considere o seguinte trecho do script de Ana:
import torch
import torch.nn.functional as F
input = torch.randn(3, 5, requires_grad=True)
target = torch.tensor([1, 2, 0])
loss_fn = F.nll_loss
loss = loss_fn(F.log_softmax(input, dim=1), target)
print(loss)
Ao ser executado, o trecho do script acima irá:
- imprimir o valor do tensor loss;
- falhar, pois a função nll_loss inexiste no PyTorch;
- falhar, pois a função log_softmax inexiste no PyTorch;
- falhar, pois o valor atribuído à variável input não é um tensor;
- falhar, pois faltam informações no valor atribuído à variável target.
Mostrar resposta e comentário
Gabarito
A
Comentário do professor
A execução do trecho imprime o valor do tensor loss. O código calcula primeiro um tensor input de forma (3,5) (3 amostras, 5 classes) com requires_grad=True e um vetor de rótulos target com 3 índices de classe.
Em seguida aplica-se F.log_softmax(input, dim=1) para obter as log‑probabilidades por linha e passa‑se isso para F.nll_loss, que computa a perda de log‑verossimilhança negativa. Por definição, para N amostras a saída é a média: \( \text{loss} = -\frac{1}{N}\sum_{i=1}^{N}\log p_{i, y_i} \).
O resultado é um tensor escalar que mantém informação de gradiente (visto o input com requires_grad) e o comando print(loss) imprime esse tensor, mostrando seu valor numérico, o dtype e o dispositivo.
Portanto, a saída exibida no console será a representação textual do tensor loss calculado.
Conteúdo do catálogo FC Concursos · Atualizado em