Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -1,4 +1,6 @@
|
|
1 |
import gradio as gr
|
|
|
|
|
2 |
from fastai.learner import load_learner
|
3 |
import pandas as pd
|
4 |
import numpy as np
|
@@ -11,6 +13,36 @@ ids_list = list(map(str, ids.tolist()))
|
|
11 |
|
12 |
ratings = pd.read_csv('ratings.csv')
|
13 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
14 |
def top5(user):
|
15 |
user = int(user)
|
16 |
items = pd.Series(learn.dls.classes['title']).unique()
|
|
|
1 |
import gradio as gr
|
2 |
+
from fastai.collab import *
|
3 |
+
from fastai.tabular.all import *
|
4 |
from fastai.learner import load_learner
|
5 |
import pandas as pd
|
6 |
import numpy as np
|
|
|
13 |
|
14 |
ratings = pd.read_csv('ratings.csv')
|
15 |
|
16 |
+
class CollabNN(Module):
|
17 |
+
def __init__(self, user_sz, item_sz, y_range=(0,5.5), n_act=100):
|
18 |
+
self.user_factors = Embedding(*user_sz)
|
19 |
+
self.item_factors = Embedding(*item_sz)
|
20 |
+
self.layers = nn.Sequential(
|
21 |
+
nn.Linear(user_sz[1]+item_sz[1], n_act),
|
22 |
+
nn.ReLU(),
|
23 |
+
nn.Linear(n_act, 1))
|
24 |
+
self.y_range = y_range
|
25 |
+
|
26 |
+
def forward(self, x):
|
27 |
+
embs = self.user_factors(x[:,0]),self.item_factors(x[:,1])
|
28 |
+
x = self.layers(torch.cat(embs, dim=1))
|
29 |
+
return sigmoid_range(x, *self.y_range)
|
30 |
+
|
31 |
+
class DotProduct(Module):
|
32 |
+
def __init__(self, n_users, n_books, n_factors, y_range=(0, 5.5)):
|
33 |
+
self.user_factors = Embedding(n_users, n_factors)
|
34 |
+
self.user_bias = Embedding(n_users, 1)
|
35 |
+
self.books_factors = Embedding(n_books, n_factors)
|
36 |
+
self.books_bias = Embedding(n_books, 1)
|
37 |
+
self.y_range = y_range
|
38 |
+
|
39 |
+
def forward(self, x):
|
40 |
+
users = self.user_factors(x[:,0])
|
41 |
+
books = self.books_factors(x[:,1])
|
42 |
+
res = (users * books).sum(dim=1, keepdim=True)
|
43 |
+
res += self.user_bias(x[:,0]) + self.books_bias(x[:,1])
|
44 |
+
return sigmoid_range(res, *self.y_range)
|
45 |
+
|
46 |
def top5(user):
|
47 |
user = int(user)
|
48 |
items = pd.Series(learn.dls.classes['title']).unique()
|