def METHOD_NAME(self, x: Tensor, num_segs: int, **kwargs) -> Tensor:
    """Defines the computation performed at every call.
    Args:
        x (Tensor): The input data.
        num_segs (int): Useless in TSMHead. By default, `num_segs`
            is equal to `clip_len * num_clips * num_crops`, which is
            automatically generated in Recognizer forward phase and
            useless in TSM models. The `self.num_segments` we need is a
            hyper parameter to build TSM models.
    Returns:
        Tensor: The classification scores for input samples.
    """
    # [N * num_segs, in_channels, 7, 7]
    if self.avg_pool is not None:
        x = self.avg_pool(x)
    # [N * num_segs, in_channels, 1, 1]
    x = torch.flatten(x, 1)
    # [N * num_segs, in_channels]
    if self.dropout is not None:
        x = self.dropout(x)
    # [N * num_segs, num_classes]
    cls_score = self.fc_cls(x)
    if self.is_shift and self.temporal_pool:
        # [2 * N, num_segs // 2, num_classes]
        cls_score = cls_score.view((-1, self.num_segments // 2) +
                                   cls_score.size()[1:])
    else:
        # [N, num_segs, num_classes]
        cls_score = cls_score.view((-1, self.num_segments) +
                                   cls_score.size()[1:])
    # [N, 1, num_classes]
    cls_score = self.consensus(cls_score)
    # [N, num_classes]
    return cls_score.squeeze(1)