Analista Judiciário - Área Apoio Especializado - Especialidade: Análise de Dados
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á:
Aimprimir o valor do tensor loss;
Bfalhar, pois a função nll_loss inexiste no PyTorch;
Cfalhar, pois a função log_softmax inexiste no PyTorch;
Dfalhar, pois o valor atribuído à variável input não é um tensor;
Efalhar, pois faltam informações no valor atribuído à variável target.
Revelar gabarito e comentário▾
GabaritoA — imprimir o valor do tensor loss;
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
PyTorch: funções nll_loss e log_softmax
Gabarito: letra A. O trecho de script cria um tensor input de dimensões (3,5) com gradiente, um tensor target com rótulos de classe (valores 1,2,0), e calcula a perda usando nll_loss(log_softmax(input, dim=1), target). Todas as funções utilizadas existem em torch.nn.functional (F.nll_loss e F.log_softmax), os argumentos estão corretos, e o resultado é um tensor escalar que será impresso. Portanto, a execução não falha e imprime o valor do tensor loss.
1Cria input (3,5) com gradiente
2Cria target [1,2,0]
3Aplica log_softmax em input
4Calcula nll_loss
5Imprime tensor loss
LEVEL · soulevel.com.br
Alternativa A — ✅ Correta ⟵ GABARITO
A função F.nll_loss espera como entrada log-probabilidades (após log_softmax), e o código fornece exatamente isso. O tensor loss resultante é um tensor escalar, e a função print exibe seu valor. O script executa sem erros.
Alternativa B — ❌ Incorreta
F.nll_loss existe em torch.nn.functional. A afirmação de que inexiste é falsa.
Alternativa C — ❌ Incorreta
F.log_softmax existe em torch.nn.functional. A afirmação de que inexiste é falsa.
Alternativa D — ❌ Incorreta
input é criado com torch.randn(3, 5, requires_grad=True), que retorna um tensor. Portanto, a variável input contém um tensor válido.
Alternativa E — ❌ Incorreta
target é criado com torch.tensor([1, 2, 0]), que é um tensor 1D de inteiros representando rótulos de classe. Não faltam informações; esse é o formato esperado por nll_loss quando as classes são codificadas como índices (target deve conter valores entre 0 e número de classes-1, aqui 0,1,2, e o tensor tem 3 elementos, compatível com o batch size).