Skip to content

← Reductions and dim step 1 of 7

Easy Primitives

Find the predicted class for each row

Jump to the task

For a batch of class scores, you usually want one predicted class per row. Calling argmax() without dim instead returns one index into the entire flattened tensor.

import torch

logits = torch.tensor([[1.0, 9.0], [7.0, 3.0]])
print(logits.argmax().item())          # 1
print(logits.argmax(dim=1).tolist())   # [1, 0]

The flattened values are [1, 9, 7, 3], whose largest value is at index 1. The row-wise result separately identifies the largest score in each row. A global index can exceed the number of classes, or happen to look like a valid class index while still answering the wrong question.

Choose the axis to reduce

For shape (batch, classes), reducing dimension 1 removes the class axis and leaves shape (batch,). This assumes the default keepdim=False. With keepdim=True, the result instead has shape (batch, 1).

Use dim=-1 to name the last axis. For this two-dimensional input, it means the same thing as dim=1. Naming the axis makes the intended grouping clear; omitting it is appropriate when you really want one global result.

Ties

If a row contains multiple equal largest values, argmax returns the index of the first one. This specifies tie handling for the supplied scores; it does not guarantee that an entire model produces identical scores across runs, devices or precision settings.

Your task

def predicted_classes(logits: torch.Tensor) -> torch.Tensor

logits contains finite scores with shape (batch, classes), with at least one class. Return a one-dimensional integer tensor of length batch with the largest-score index in each row. Choose the first index in a tie. The starter incorrectly returns one global index.