MNIST / app.py
Hikmat Farhat
put the digits in the sidebar
0e485af
import streamlit as st
from streamlit_image_select import image_select
from PIL import Image
import pandas as pd
from transformers import AutoModel
import torch
from torchvision.datasets import MNIST
from torchvision.transforms import ToTensor
import numpy as np
st.title("MNIST classifier")
st.markdown("This is a simple MNIST classifier using a simple neural network")
st.markdown("select a digit from the sidebar and the classifier will give you the probability of each digit")
classifier=AutoModel.from_pretrained("hikmatfarhat/MNIST_Classifier",trust_remote_code=True)
softmax=torch.nn.Softmax(dim=1)
np.set_printoptions(precision=3,suppress=True)
imgs=[]
for i in range(15):
imgs.append(Image.open(f"img{i}.png"))
with st.sidebar:
image=image_select("select a digit",imgs,use_container_width=False)
image=ToTensor()(image)
output=classifier(image)
output=torch.squeeze(softmax(output))
output=output.detach().numpy()
## streamlit doesn't show the proper label for the column name when using numpy array
## so we convert it to pandas dataframe
df=pd.DataFrame(output,columns=["prob"])
st.dataframe(df,column_config={"prob":st.column_config.Column(
"Probability",required=True)}
,hide_index=False
)