| import os | |
| import tensorflow as tf | |
| import gradio as gr | |
| import numpy as np | |
| from huggingface_hub import hf_hub_download | |
| # 1) download your SavedModel from the Hub | |
| repo_id = "NathanSegers/masterclass-2025" | |
| hf_hub_download(repo_id, filename="config.json", repo_type="model", local_dir="./model") | |
| hf_hub_download(repo_id, filename="metadata.json", repo_type="model", local_dir="./model") | |
| hf_hub_download(repo_id, filename="model.weights.h5", repo_type="model", local_dir="./model") | |
| # 2) load it | |
| model = tf.keras.models.load_model("./model") | |
| # 3) simple preprocess + predict | |
| CLASS_NAMES = ["cat","dog","panda"] | |
| def predict(image): | |
| resized_image = tf.image.resize(image, (64,64)) | |
| images_to_predict = np.expand_dims(np.array(resized_image), axis=0) | |
| probs = model.predict(images_to_predict)[0] | |
| return {c: float(p) for c,p in zip(CLASS_NAMES, probs)} | |
| # 4) launch Gradio | |
| gr.Interface( | |
| fn=predict, | |
| inputs=gr.Image(), | |
| outputs=gr.Label(num_top_classes=3) | |
| ).launch() |