Embeddeing == @One hot encoding
from fastai.collab import *
from fastai.tabular.all import *
path = untar_data(URLs.ML_100k)
path.ls()
ratings = pd.read_csv(path/'u.data', sep='\t', header=None)
ratings.columns = ['user', 'movie', 'rating', 'timestamp']
ratings = ratings.drop(columns='timestamp')
ratings.head()
dls = CollabDataLoaders.from_df(ratings, item_name='movie', bs=64)
dls.show_batch()
n_users = len(dls.classes['user'])
n_movie = len(dls.classes['movie'])
n_factors = 5
user_factors = torch.randn(n_users, n_factors)
movie_factors = torch.randn(n_movie, n_factors)
user_factors.shape, movie_factors.shape
one_hot_3 = one_hot(3, n_users).float()
one_hot_5 = one_hot(5, n_users).float()
one_hot = torch.stack([one_hot_3, one_hot_5], dim=1)
one_hot.shape
one_hot.t() @ user_factors
user_factors[[3,5],:]