mayura25's picture
Update app.py
84b1aa3
raw
history blame
No virus
1.92 kB
import numpy as np
import tensorflow as tf
from tensorflow import keras
import matplotlib.pyplot as plt
from PIL import Image
(X_train, y_train) , (X_test, y_test) = keras.datasets.mnist.load_data()
# Scaling array values so we get values form 0 to 1
X_train = X_train / 255
X_test = X_test / 255
# Define a simple feedforward neural network
model2 = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)), # Flatten the 28x28 images
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(64, activation='relu'),
keras.layers.Dense(10, activation='softmax')
])
# Compile the model
model2.compile(optimizer='adam',
loss='sparse_categorical_crossentropy', # Corrected the loss function
metrics=['accuracy'])
# Train the model
model2.fit(X_train, y_train, epochs=5) # Assuming X_train and y_train are properly loaded
# Function to preprocess the uploaded image
def preprocess_image(input_image_path): # Accept file path as input
# Load the image using PIL
image = Image.open(input_image_path)
# Resize and convert the image to grayscale
image = image.resize((28, 28)).convert('L')
# Convert the image to a NumPy array
image_array = np.array(image)
# Normalize the pixel values
image_array = image_array / 255.0
return image_array
# Function to make predictions
def predict_digit(input_image_path):
# Preprocess the image
image_array = preprocess_image(input_image_path)
# Reshape the image_array
image_array = image_array.reshape(1, 28, 28)
prediction = model2.predict(image_array)
predicted_digit = np.argmax(prediction)
otpt = f"Predicted digit: {predicted_digit}"
return str(otpt)
import gradio as gr
iface = gr.Interface(
fn=predict_digit,
inputs=gr.Image(type="filepath", label="Upload Image"),
outputs=gr.Textbox("Predicted Digit"),
)
iface.launch()