def __init__(self, input_dim, output_dim, lorder=None, hidden_size=None):
        """Initializes the UniDeepFsmn model.

        Args:
            input_dim (int): The number of input features.
            output_dim (int): The number of output features.
            lorder (int, optional): The order of the linear filter. Default is None.
            hidden_size (int, optional): The number of hidden units. Default is None.
        """
        super(UniDeepFsmn, self).__init__()

        self.input_dim = input_dim  # Store input dimension
        self.output_dim = output_dim  # Store output dimension

        if lorder is None:
            return  # Exit if no filter order is specified

        self.lorder = lorder  # Store the linear filter order
        self.hidden_size = hidden_size  # Store hidden layer size

        # Define linear transformation from input to hidden layer
        self.linear = nn.Linear(input_dim, hidden_size)

        # Define linear transformation from hidden layer to output
        self.project = nn.Linear(hidden_size, output_dim, bias=False)

        # Define convolutional layer for processing output with specified filter order
        self.conv1 = nn.Conv2d(output_dim, output_dim, [lorder + lorder - 1, 1], [1, 1], groups=output_dim, bias=False)
Initializes the UniDeepFsmn model.

        Args:
            input_dim (int): The number of input features.
            output_dim (int): The number of output features.
            lorder (int, optional): The order of the linear filter. Default is None.
            hidden_size (int, optional): The number of hidden units. Default is None.
        
clearvoice/clearvoice/models/mossformer_gan_se/fsmn.py