File size: 1,224 Bytes
ff5c137
 
 
 
 
 
 
 
 
0e485af
 
 
ff5c137
 
 
 
 
 
 
0e485af
 
ff5c137
 
 
 
 
 
 
 
 
 
 
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
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
    )