def __init__(self, fuid, fiid, num_users, embed_dim, max_seq_len, item_encoder, pooling_type='mean') -> None:
    super().__init__()
    self.fuid = fuid
    self.fiid = fiid
    self.item_encoder = item_encoder
    self.pooling_type = pooling_type
    self.user_embedding = torch.nn.Embedding(num_users, embed_dim, 0)
    self.W_g_1 = torch.nn.Linear(embed_dim, embed_dim, bias=False)
    self.W_g_2 = torch.nn.Linear(embed_dim, embed_dim, bias=False)
    self.b_g = torch.nn.Parameter(torch.empty(embed_dim), requires_grad=True)
    self.w_g_3 = torch.nn.Linear(embed_dim, 1, bias=False)
    self.W_g_4 = torch.nn.Linear(embed_dim, max_seq_len)
def __init__(self, fuid, fiid, num_users, embed_dim, max_seq_len, item_encoder, pooling_type='mean') -> None:
    super().__init__()
    self.fuid = fuid
    self.fiid = fiid
    self.item_encoder = item_encoder
    self.pooling_type = pooling_type
    self.user_embedding = torch.nn.Embedding(num_users, embed_dim, 0)
    self.W_g_1 = torch.nn.Linear(embed_dim, embed_dim, bias=False)
    self.W_g_2 = torch.nn.Linear(embed_dim, embed_dim, bias=False)
    self.b_g = torch.nn.Parameter(torch.empty(embed_dim), requires_grad=True)
    self.w_g_3 = torch.nn.Linear(embed_dim, 1, bias=False)
    self.W_g_4 = torch.nn.Linear(embed_dim, max_seq_len)