File size: 1,231 Bytes
f9cfad3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
"""

Streamlit app – generates 1-10 MNIST-style digits using your trained cGAN

Run: streamlit run app.py

"""

import streamlit as st
import tensorflow as tf
import numpy as np
from PIL import Image

LATENT_DIM   = 100
NUM_CLASSES  = 10
MODEL_FILE   = "generator_full.keras"   # <— same name you downloaded

# ---------- 1. Load generator only once per worker ----------
@st.cache_resource(show_spinner="Cargando modelo…")
def load_generator(model_path=MODEL_FILE):
    # load_model includes architecture, so no need to rebuild by hand
    return tf.keras.models.load_model(model_path, compile=False)

gen = load_generator()

# ---------- 2. Streamlit UI ----------
st.title("✍️ Generador de dígitos manuscritos (cGAN, 20 epochs)")
digit = st.number_input("Dígito (0-9)", min_value=0, max_value=9, value=4, step=1)
num   = 5

if st.button("Generar"):
    z   = tf.random.normal([num, LATENT_DIM])
    lbl = tf.constant([[digit]] * num)
    imgs = (gen([z, lbl], training=False) + 1) / 2      # scale [-1,1] → [0,1]
    cols = st.columns(num)
    for c, img in zip(cols, imgs.numpy().squeeze()):
        c.image(Image.fromarray((img * 255).astype("uint8"), "L"), use_column_width=True)