File size: 2,235 Bytes
ddfcbfd
fea1e17
b1334ad
1b8bf98
 
 
 
bc874f6
1b8bf98
 
 
 
 
bc874f6
1b8bf98
 
d27ee2d
1b8bf98
 
 
 
 
 
 
 
 
 
 
 
 
a959427
1b8bf98
 
 
 
 
 
 
 
 
 
 
a2bf36a
1b8bf98
d27ee2d
2c7bae6
39f82d8
4f7405e
39f82d8
d27ee2d
39f82d8
 
4f7405e
1b8bf98
 
 
 
 
d27ee2d
 
39f82d8
 
d27ee2d
1b8bf98
 
 
 
b1f819b
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
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 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)