Spaces:
Runtime error
Runtime error
import gradio as gr | |
import torch | |
from torch import nn | |
labels = ['Zero','Um','Dois','Três','Quatro','Cinco','Seis','Sete','Oito', 'Nove'] | |
# Locate device | |
if torch.cuda.is_available(): | |
device = torch.device("cuda:0") | |
print("GPU") | |
else: | |
device = torch.device("cpu") | |
print("CPU") | |
# Neural Network | |
class LeNet(nn.Module): | |
def __init__(self): | |
super(LeNet, self).__init__() | |
self.convs = nn.Sequential( | |
nn.Conv2d(in_channels=1, out_channels=4, kernel_size=(5, 5)), | |
nn.Tanh(), | |
nn.AvgPool2d(2, 2), | |
nn.Conv2d(in_channels=4, out_channels=12, kernel_size=(5, 5)), | |
nn.Tanh(), | |
nn.AvgPool2d(2, 2) | |
) | |
self.linear = nn.Sequential( | |
nn.Linear(4*4*12,10) | |
) | |
def forward(self, x): | |
x = self.convs(x) | |
x = torch.flatten(x, 1) | |
return self.linear(x) | |
# Loading model | |
model = LeNet().to(device) | |
model.load_state_dict(torch.load("model_mnist.pth", map_location=torch.device('cpu'))) | |
def predict(input): | |
input = torch.from_numpy(input.reshape(1, 1, 28, 28)).to(dtype=torch.float32, device=device) | |
with torch.no_grad(): | |
outputs = model(input) | |
prediction = torch.nn.functional.softmax(outputs[0], dim=0) | |
confidences = {labels[i]: float(prediction[i]) for i in range(10)} | |
return confidences | |
gr.Interface(title='Classificador de dígitos', fn=predict, | |
inputs="sketchpad", | |
outputs=gr.Label(num_top_classes=3)).launch(share=True, debug=True) |