Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| import tensorflow as tf | |
| import numpy as np | |
| import os | |
| import PIL | |
| import PIL.Image | |
| # Create a Gradio App using Blocks | |
| with gr.Blocks() as demo: | |
| gr.Markdown( | |
| """ | |
| # AI/ML Playground | |
| """ | |
| ) | |
| with gr.Accordion("Click for Instructions:"): | |
| gr.Markdown( | |
| """ | |
| * uploading an image will setup, train, and evaluate the base model | |
| """) | |
| # Train, evaluate and test a ML | |
| # image classification model for | |
| # clothes images | |
| def modelTraining(img): | |
| # clothing dataset | |
| mnist = tf.keras.datasets.mnist | |
| #split the training data in to a train/test sets | |
| (x_train, y_train), (x_test, y_test) = mnist.load_data() | |
| x_train, x_test = x_train / 255.0, x_test / 255.0 | |
| # create the neural net layers | |
| model = tf.keras.models.Sequential([ | |
| tf.keras.layers.Flatten(input_shape=(28, 28)), | |
| tf.keras.layers.Dense(128, activation='relu'), | |
| tf.keras.layers.Dropout(0.2), | |
| tf.keras.layers.Dense(10) | |
| ]) | |
| #make a post-training predition on the | |
| #training set data | |
| predictions = model(x_train[:1]).numpy() | |
| # converts the logits into a probability | |
| tf.nn.softmax(predictions).numpy() | |
| #create and train the loss function | |
| loss_fn = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True) | |
| loss_fn(y_train[:1], predictions).numpy() | |
| # compile the model with the loss function | |
| model.compile(optimizer='adam', | |
| loss=loss_fn, | |
| metrics=['accuracy']) | |
| # train the model - 5 runs | |
| # evaluate the model on the test set | |
| model.fit(x_train, y_train, epochs=5) | |
| test_loss, test_acc = model.evaluate(x_test, y_test, verbose=2) | |
| print("Test accuracy: ", test_acc) | |
| # Define any necessary preprocessing steps for the image input here | |
| # the image can be passed as a PIL or numpy | |
| # create the final model for production | |
| probability_model = tf.keras.Sequential([model, tf.keras.layers.Softmax()]) | |
| # Normalize the pixel values | |
| img_normal = img / 255.0 | |
| img_normal = img_normal.reshape((1, 28, 28)) | |
| # Make a prediction using the model | |
| prediction = probability_model.predict(img_normal) | |
| # Postprocess the prediction and return it | |
| return np.argmax(predictions[0]) | |
| # Creates the Gradio interface objects | |
| with gr.Row(): | |
| with gr.Column(scale=2): | |
| image_data = gr.Image(label="Upload Image", type="numpy") | |
| with gr.Column(scale=1): | |
| model_performance = gr.Text(label="Model Performance", interactive=False) | |
| model_prediction = gr.Text(label="Model Prediction", interactive=False) | |
| image_data.change(modelTraining, image_data, model_prediction) | |
| # creates a local web server | |
| # if share=True creates a public | |
| # demo on huggingface.c | |
| demo.launch(share=False) |