jayeshmurthi49-byte's picture
Update app.py
4dc3794 verified
Raw
History Blame Contribute Delete
1.38 kB
import torch
import torch.nn as nn
from torchvision import transforms
import gradio as gr
import numpy as np
from PIL import Image
# Define same MLP
class MLP(nn.Module):
def __init__(self):
super(MLP, self).__init__()
self.fc1 = nn.Linear(28*28, 128)
self.fc2 = nn.Linear(128, 64)
self.fc3 = nn.Linear(64, 10)
self.relu = nn.ReLU()
def forward(self, x):
x = x.view(-1, 28*28)
x = self.relu(self.fc1(x))
x = self.relu(self.fc2(x))
x = self.fc3(x)
return x
# Load model
model = MLP()
model.load_state_dict(torch.load('model.pkl', map_location=torch.device('cpu')))
model.eval()
# Predict function
def predict(image):
transform = transforms.Compose([
transforms.Grayscale(),
transforms.Resize((28, 28)),
transforms.ToTensor()
])
image = Image.fromarray(image.astype('uint8'))
tensor = transform(image).unsqueeze(0)
with torch.no_grad():
output = model(tensor)
predicted = torch.argmax(output, dim=1).item()
return f"Predicted Digit: {predicted}"
# Gradio UI
app = gr.Interface(
fn=predict,
inputs=gr.Image(),
outputs=gr.Textbox(),
title="MNIST Digit Recognizer",
description="Draw or upload a digit (0-9) and the model will predict it"
)
app.launch()