Spaces:
Sleeping
Sleeping
| from fastai.collab import load_learner | |
| from fastai.tabular.all import * | |
| def create_params(size): | |
| return nn.Parameter(torch.zeros(*size).normal_(0, 0.01)) | |
| class DotProductBias(Module): | |
| def __init__(self, n_users, n_items, n_factors, y_range=(0, 1.5)): | |
| super().__init__() | |
| self.user_factors = create_params([n_users, n_factors]) | |
| self.user_bias = create_params([n_users]) | |
| self.item_factors = create_params([n_items, n_factors]) | |
| self.item_bias = create_params([n_items]) | |
| self.y_range = y_range | |
| def forward(self, x): | |
| users = self.user_factors[x[:, 0]] | |
| items = self.item_factors[x[:, 1]] | |
| res = (users * items).sum(dim=1) | |
| res += self.user_bias[x[:, 0]] + self.item_bias[x[:, 1]] | |
| return sigmoid_range(res, *self.y_range) | |
| async def setup_learner(model_filename: str): | |
| learn = load_learner(model_filename) | |
| learn.dls.device = 'cpu' | |
| return learn |