def forward(self, input):
        """
        Forward pass through the UniDeepFsmn model.
        
        Parameters:
        - input (Tensor): Input tensor of shape (batch_size, sequence_length, input_dim).
        
        Returns:
        - Tensor: Output tensor after processing, with the same shape as input.
        """
        # Apply linear transformation and ReLU activation
        f1 = F.relu(self.linear(input))
        # Project to output dimension
        p1 = self.project(f1)

        # Reshape and pad the tensor for convolution
        x = torch.unsqueeze(p1, 1)  # Shape: (b, c, T, h)
        x_per = x.permute(0, 3, 2, 1)  # Permute to shape (b, h, T, c)
        y = F.pad(x_per, [0, 0, self.lorder - 1, 0])  # Pad the tensor

        # Add convolutional output to original input
        out = x_per + self.conv1(y)

        out1 = out.permute(0, 3, 2, 1)  # Restore original shape
        return input + out1.squeeze()  # Return the combined output

        Forward pass through the UniDeepFsmn model.
        
        Parameters:
        - input (Tensor): Input tensor of shape (batch_size, sequence_length, input_dim).
        
        Returns:
        - Tensor: Output tensor after processing, with the same shape as input.
        
clearvoice/clearvoice/models/frcrn_se/complex_nn.py