File size: 2,264 Bytes
ddfcbfd
fea1e17
b1334ad
1b8bf98
 
 
 
bc874f6
1b8bf98
 
 
 
 
bc874f6
1b8bf98
 
d27ee2d
1b8bf98
 
 
 
 
 
 
 
 
 
 
 
 
a959427
1b8bf98
 
 
 
 
 
 
 
 
 
 
2c7bae6
1b8bf98
d27ee2d
2c7bae6
39f82d8
d27ee2d
 
39f82d8
d27ee2d
39f82d8
 
 
1b8bf98
 
 
 
 
d27ee2d
 
39f82d8
 
d27ee2d
1b8bf98
 
 
 
 
 
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import gradio as gr
import tensorflow as tf

# Create a Gradio App using Blocks    
with gr.Blocks() as demo:
    gr.Markdown(
    """
    # AI/ML Playground
    """
    )
    with gr.Accordion("Click for Instructions:"):
            gr.Markdown(
    """
    * Train/Eval will setup, train, and evaluate the base model
    """)

    def modelTraining(img):
        mnist = tf.keras.datasets.mnist

        (x_train, y_train), (x_test, y_test) = mnist.load_data()
        x_train, x_test = x_train / 255.0, x_test / 255.0

        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)
        ])

        predictions = model(x_train[:1]).numpy()
        
        tf.nn.softmax(predictions).numpy()
        
        loss_fn = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)
        loss_fn(y_train[:1], predictions).numpy()
        
        model.compile(optimizer='adam',
                      loss=loss_fn,
                      metrics=['accuracy'])
        
        
        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
        probability_model = tf.keras.Sequential([model, 
                                         tf.keras.layers.Softmax()])
        # Make a prediction using the model
        prediction = probability_model.predict(img)

        # Postprocess the prediction and return it
        return prediction
        

    # 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.co
demo.launch(share=False)