import torch
import torch.nn as nn


class Model(nn.Module):
    def __init__(self, T=1.0):
        super().__init__()
        self.T = T

    def forward(self, x: torch.Tensor) -> torch.Tensor:
        tanh_T = torch.tanh(torch.tensor(self.T, dtype=x.dtype, device=x.device))

        y_saturated = torch.sign(x) * tanh_T

        return torch.where(x.abs() < self.T, torch.tanh(x), y_saturated)


batch_size = 128
feature_dim = 512


def get_inputs():
    x = torch.randn(batch_size, feature_dim, dtype=torch.float32)
    return [x]


def get_init_inputs():
    return [1.0]