Question on documentation

In the init, what does the asterix mean in get_emb(*o). I looked online and could not find a lot. Is this a pointer? Also how are does the model get the cats and conts arrays? We don’t define users or movies in the init function. Am I missing something?

class EmbeddingNet(nn.Module):
def __init__(self, n_users, n_movies, nh=10, p1=0.05, p2=0.5):
    super().__init__()
    (self.u, self.m) = [get_emb(*o) for o in [
        (n_users, n_factors), (n_movies, n_factors)]]
    self.lin1 = nn.Linear(n_factors*2, nh)
    self.lin2 = nn.Linear(nh, 1)
    self.drop1 = nn.Dropout(p1)
    self.drop2 = nn.Dropout(p2)
    
def forward(self, cats, conts):
    users,movies = cats[:,0],cats[:,1]
    x = self.drop1(torch.cat([self.u(users),self.m(movies)], dim=1))
    x = self.drop2(F.relu(self.lin1(x)))
    return F.sigmoid(self.lin2(x)) * (max_rating-min_rating+1) + min_rating-0.5

Should be unpacking?
(See: https://medium.com/understand-the-python/understanding-the-asterisk-of-python-8b9daaa4a558)

That makes sense now. Thank you!

Do you possibly (or anyone else) know how pytorch gets which data is categorical and which is continuous? (Like in the forward function I have to input a cats and conts)

Thanks!