El objetivo es de la tarea es habilitar la sección A jugar
para que tengamos un panel como el siguiente:
en el cuál podamos ejecutar una operación matemática sencilla y evaluar su resultado.
Tenemos entonces tres tipos de input en nuestro canvas:
- Exponentes: 3 posibles referentes a los cuadrados morados. Deben ser números del 0 al 9.
- Operadores: 2 posibles referentes a los cuadrados azules. Explicados en la siguiente sección.
- Números: 3 posibles referentes a los cuadrados rojos. Deben ser números del 0 al 9.
El dataset debe ser creado por ustedes! La cantidad de imágenes, estilo, resolución y cualquier elemento que consideren relevante debe ser decidido por ustedes: sean creativos. En el notebook referente al modelo de operadores, es necesaria una sección que explique toda la toma decisiones.
Solo vamos a usar las 4 operaciones fundamentales: suma, resta, multiplicación y división.
En el caso de suma y resta las únicas opciones posibles son: + (ASCII Code 43) y - (ASCII Code 45), respectivamente.
En el caso de multiplicación y división tendremos 2 opciones como sigue:
Una × (ASCII Code 215) o un asterísco * (ASCII Code 42)
Un slash / (ASCII code 47) o el operando convencional ÷ (ASCII code 247)
Ya disponible en el código
from keras.datasets import mnist
@st.cache_data
def get_mnist_data():
return mnist.load_data()
Usaremos el dataset mnist con la interfaz de Keras para facilitar consistencia en todos los proyectos.
- En la sección
notebooks
deben crear uno o dos archivos.ipynb
donde expliquen claramente todo el pipeline que usaron para crear los modelos, explicar el proceso de preprocesamiento, creación de datos (de ser necesario) y cualquier elemento que consideren relevante. - Los modelos asociados a la solución principal deben haber sido vistos en clase.
- Los modelos extras que quisieran agregar para comparar rendimiento pueden no haber sido vistos en clases (redes neuronales convolucionales usando PyTorch por ejemplo)
El código base está hecho en Streamlit un framework para desarrollar aplicaciones en Python enfocadas en datos.
La Documentación de streamlit es bastante sencilla de entender y la mayoría de funcionalidades necesarias ya están implementadas.
Necesitamos solamente los siguientes comandos de Docker compose
docker compose build
crea el contenedordocker compose up
lo ejecuta en modo desarrolladordocker compose up -d
lo ejecuta modo daemon
- Asumimos que la aplicación siempre será usada por un agente honesto. No se debe validar para datos que no sean los referentes al modelo (aunque es un problema interesante de resolver)
- Somos consistentes en la entrada de cada canvas así como en el orden de las operaciones: de izquierda a derecha y con prioridad de operadores: ^, ( *, /), (+, -).
Escoger las secciones útiles de 02_Canvas.py
y crear la vista referente a cada uno de los elementos de entrada:
- 3 Coeficientes
- 3 exponentes
- 2 operadores
Para luego llamar a los modelos y evaluar la función.