Questão nº 49

Questão de Tecnologia da Informação · FGV TRF1 2024 (nº 49)

FGV2024Analista Judiciário - Análise de DadosTecnologia da Informação
Gabarito: Aver comentário ↓

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á:

Resposta comentada

Gabarito Alternativa A

Em Deep Learning para classificação, a função log_softmax transforma as saídas brutas de um modelo (chamadas logits) em log-probabilidades, que são valores logarítmicos das probabilidades de cada classe. A função nll_loss (Negative Log Likelihood Loss) então usa essas log-probabilidades e os rótulos verdadeiros (índices das classes corretas) para calcular o erro do modelo, penalizando previsões incorretas.

  • (A) Correta: O script executa todas as operações de forma válida. A variável input é um tensor de logits, target são os rótulos das classes (índices), F.log_softmax converte os logits em log-probabilidades, e F.nll_loss calcula a perda corretamente. O print(loss) irá, portanto, exibir o valor do tensor de perda resultante.
  • (B) Incorreta: A função F.nll_loss é uma função padrão e existente no módulo torch.nn.functional do PyTorch, utilizada para calcular a perda de entropia cruzada negativa.
  • (C) Incorreta: A função F.log_softmax é uma função padrão e existente no módulo torch.nn.functional do PyTorch, utilizada para aplicar a função softmax e, em seguida, o logaritmo.
  • (D) Incorreta: A linha input = torch.randn(3, 5, requires_grad=True) cria explicitamente um tensor PyTorch com valores aleatórios e a capacidade de rastrear gradientes, o que é um uso correto da API.
  • (E) Incorreta: A variável target = torch.tensor([1, 2, 0]) está corretamente formatada. Para F.nll_loss (quando o input são log-probabilidades), o target deve ser um tensor 1D contendo os índices das classes corretas para cada amostra do batch. A armadilha aqui é que muitos iniciantes podem esperar que o target seja um tensor one-hot encoded ou tenha a mesma dimensão do input, mas para esta função específica, os índices de classe são o formato esperado.

Fonte: FGV TRF1 2024 Analista Judiciário - Análise de Dados (Caderno Tipo 1). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho