File size: 1,569 Bytes
390de6f 7e5decb 390de6f 05818c4 390de6f de4fabe 390de6f ac5731e 390de6f c010e3f 820387f |
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 |
import numpy as np
import gradio as gr
from PIL import Image
from tensorflow import keras
model = keras.models.Sequential([
keras.layers.Flatten(input_shape=(28, 28)), # Diese Schicht nimmt unser 2D-Bild und verwandelt es in ein 1D-Array
keras.layers.Dense(512, activation='relu'), # Als Nächstes kommen zwei Schichten mit 512 künstlichen Neuronen. Als Funktion wählen wir 'relu' f(x) = max(0,x)
keras.layers.Dense(512, activation='relu'),
keras.layers.Dense(10, activation='softmax') # Die letzte Schicht besteht aus 10 Neuronen, die für unsere 10 Zahlen stehen. Die 'softmax' Funktion wandelt die Ergebnisse der vorherigen Schicht in Wahrscheinlichkeiten
])
model.compile(optimizer=keras.optimizers.Adam(0.001),
loss=keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=[keras.metrics.SparseCategoricalAccuracy()])
model.load_weights('./weights/mnist.weights.h5')
def classify(input):
image = np.expand_dims(np.array(Image.fromarray(input['layers'][0]).resize((28,28), resample=Image.Resampling.BILINEAR), dtype=int), axis=0)
prediction = model.predict(image).tolist()[0]
return {str(i): float(prediction[i]) for i in range(10)}
input_sketchpad = gr.Paint(image_mode="L", brush=gr.components.image_editor.Brush(default_color="rgb(156, 104, 200)"))
output_lable = gr.Label()
gr.Interface(fn=classify,
inputs=input_sketchpad,
outputs=output_lable,
flagging_mode='never',
theme=gr.themes.Soft()).launch() |