File size: 1,466 Bytes
6c06964
c83ef54
c647e79
 
61da52c
3d05645
6c06964
 
 
bbc37ba
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6c06964
d74a713
 
 
 
 
 
 
 
 
 
6c06964
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import gradio as gr
import pickle
from fastai.collab import *
from fastai.tabular.all import *
import pandas
import pandas.core.indexes.numeric

#__all__ = ['NumberClass', 'learn', 'classify_image', 'categories', 'image', 'label', 'examples', 'intf']

class DotProductBias(Module):
    def __init__(self, n_users, n_animes, n_factors, y_range=(0,10.5)):
        self.user_factors = Embedding(n_users, n_factors)
        self.user_bias = Embedding(n_users, 1)
        self.anime_factors = Embedding(n_animes, n_factors)
        self.anime_bias = Embedding(n_animes, 1)
        self.y_range = y_range
        
    def forward(self, x):
        users = self.user_factors(x[:,0])
        animes = self.anime_factors(x[:,1])
        res = (users * animes).sum(dim=1, keepdim=True)
        res += self.user_bias(x[:,0]) + self.anime_bias(x[:,1])
        return sigmoid_range(res, *self.y_range)

def get_y(r):
    result = learn.forward(r)
    return result[0][0]

class CustomUnpickler(pickle.Unpickler):
    def persistent_load(self, persid):
        return None
    
with open('CollaborativeFiltering.pkl', 'rb') as f:
    custom_unpickler = CustomUnpickler(f)
    learn = custom_unpickler.load()

label = gr.outputs.Label()

usr = gr.inputs.Number(label = 'Usuário')
anime = gr.inputs.Number(label = 'Anime')

r = tensor([[usr, anime]])

inputs = [r]

output = gr.outputs.Textbox()

intf = gr.Interface(fn=get_y, inputs="r", outputs=output)

intf.launch(inline=False)