So I have two question wrt the colab filtering code
class DotProduct(Module): def __init__(self, n_users, n_movies, n_factors): self.user_factors = Embedding(n_users, n_factors) self.movie_factors = Embedding(n_movies, n_factors) def forward(self, x): users = self.user_factors(x[:,0]) movies = self.movie_factors(x[:,1]) return (users * movies).sum(dim=1)
- Why is self.user_factors(x[:,0]) indexed with a ‘:’? Aren’t models supposed to be built with the idea of a single input not a batch?
- why is the sum happening along dim 1 and not 0 ? I can’t quite grasp the intuition behind that