?? UCRANIA ESTÁ SIENDO ATACADA POR EL EJÉRCITO RUSO. LOS CIVILES ESTÁN MUERTOS. LAS ZONAS RESIDENCIALES ESTÁN SIENDO BOMBARDEADAS.
- Ayuda a Ucrania a través de:
- Fundación benéfica Serhiy Prytula
- Fundación Benéfica Vuelve Viva
- Banco Nacional de Ucrania
- Más información en war.ukraine.ua y MFA de Ucrania
Esta es una colección de experimentos interactivos de aprendizaje automático. Cada experimento consta de ?️ Cuaderno Jupyter/Colab (para ver cómo se entrenó un modelo) y ? página de demostración (para ver un modelo en acción directamente en su navegador).
Quizás también te interese GPT • JS casero
️ Este repositorio contiene experimentos de aprendizaje automático y no códigos y modelos listos para producción, reutilizables, optimizados y ajustados. Se trata más bien de una zona de pruebas o un patio de recreo para aprender y probar diferentes enfoques, algoritmos y conjuntos de datos de aprendizaje automático. Es posible que los modelos no funcionen bien y que haya lugar para un ajuste excesivo o insuficiente.
La mayoría de los modelos de estos experimentos se entrenaron utilizando TensorFlow 2 con soporte de Keras.
El aprendizaje supervisado es cuando tienes variables de entrada X
y una variable de salida Y
y usas un algoritmo para aprender la función de mapeo desde la entrada a la salida: Y = f(X)
. El objetivo es aproximar la función de mapeo tan bien que cuando tenga nuevos datos de entrada X
pueda predecir las variables de salida Y
para esos datos. Se llama aprendizaje supervisado porque el proceso de aprendizaje de un algoritmo a partir del conjunto de datos de entrenamiento puede considerarse como un maestro que supervisa el proceso de aprendizaje.
Un perceptrón multicapa (MLP) es una clase de red neuronal artificial (ANN) de alimentación directa. Los perceptrones multicapa a veces se denominan redes neuronales "vainilla" (compuestas por múltiples capas de perceptrones), especialmente cuando tienen una única capa oculta. Puede distinguir datos que no son separables linealmente.
Experimento | Demostración y capacitación del modelo | Etiquetas | Conjunto de datos | |
---|---|---|---|---|
Reconocimiento de dígitos escritos a mano (MLP) | MLP | MNIST | ||
Reconocimiento de bocetos escritos a mano (MLP) | MLP | Dibujo rápido |
Una red neuronal convolucional (CNN o ConvNet) es una clase de redes neuronales profundas, que se aplica más comúnmente al análisis de imágenes visuales (fotos, videos). Se utilizan para detectar y clasificar objetos en fotografías y vídeos, transferencia de estilo, reconocimiento facial, estimación de pose, etc.
Experimento | Demostración y capacitación del modelo | Etiquetas | Conjunto de datos | |
---|---|---|---|---|
Reconocimiento de dígitos escritos a mano (CNN) | CNN | MNIST | ||
Reconocimiento de bocetos escritos a mano (CNN) | CNN | Dibujo rápido | ||
Piedra, papel o tijera (CNN) | CNN | RPS | ||
Piedra, papel o tijera (MobilenetV2) | MobileNetV2 , Transfer learning , CNN | RPS, ImageNet | ||
Detección de objetos (MobileNetV2) | MobileNetV2 , SSDLite , CNN | PALMA DE COCO | ||
Clasificación de imágenes (MobileNetV2) | MobileNetV2 , CNN | ImagenNet |
Una red neuronal recurrente (RNN) es una clase de redes neuronales profundas, que se aplica más comúnmente a datos basados en secuencias como voz, texto o música. Se utilizan para traducción automática, reconocimiento de voz, síntesis de voz, etc.
Experimento | Demostración y capacitación del modelo | Etiquetas | Conjunto de datos | |
---|---|---|---|---|
Suma de números (RNN) | LSTM , Sequence-to-sequence | Generado automáticamente | ||
Generación de textos de Shakespeare (RNN) | LSTM , Character-based RNN | Shakespeare | ||
Generación de texto de Wikipedia (RNN) | LSTM , Character-based RNN | Wikipedia | ||
Generación de recetas (RNN) | LSTM , Character-based RNN | caja de recetas |
El aprendizaje no supervisado se produce cuando solo se tienen datos de entrada X
y ninguna variable de salida correspondiente. El objetivo del aprendizaje no supervisado es modelar la estructura o distribución subyacente de los datos para aprender más sobre los datos. Estos se denominan aprendizaje no supervisado porque, a diferencia del aprendizaje supervisado anterior, no hay respuestas correctas ni hay un maestro. Los algoritmos se dejan a su suerte para descubrir y presentar la estructura interesante de los datos.
Una red generativa adversarial (GAN) es una clase de marcos de aprendizaje automático en los que dos redes neuronales compiten entre sí en un juego. Se entrenan dos modelos simultáneamente mediante un proceso adversarial. Por ejemplo, un generador ("el artista") aprende a crear imágenes que parecen reales, mientras que un discriminador ("el crítico de arte") aprende a distinguir las imágenes reales de las falsas.
Experimento | Demostración y capacitación del modelo | Etiquetas | Conjunto de datos | |
---|---|---|---|---|
Generación de ropa (DCGAN) | DCGAN | Moda MNIST |
# Create "experiments" environment (from the project root folder).
python3 -m venv .virtualenvs/experiments
# Activate environment.
source .virtualenvs/experiments/bin/activate
# or if you use Fish...
source .virtualenvs/experiments/bin/activate.fish
Para salir de un entorno, ejecute deactivate
.
# Upgrade pip and setuptools to the latest versions.
pip install --upgrade pip setuptools
# Install packages
pip install -r requirements.txt
Para instalar nuevos paquetes, ejecute pip install package-name
. Para agregar nuevos paquetes a los requisitos, ejecute pip freeze > requirements.txt
.
Para jugar con los cuadernos de Jupyter y ver cómo se entrenaron los modelos, debe iniciar un servidor de Jupyter Notebook.
# Launch Jupyter server.
jupyter notebook
Jupyter estará disponible localmente en http://localhost:8888/
. Los cuadernos con experimentos se pueden encontrar en la carpeta de experiments
.
La aplicación de demostración se realiza en React mediante create-react-app.
# Switch to demos folder from project root.
cd demos
# Install all dependencies.
yarn install
# Start demo server on http.
yarn start
# Or start demo server on https (for camera access in browser to work on localhost).
yarn start-https
Las demostraciones estarán disponibles localmente en http://localhost:3000/
o en https://localhost:3000/
.
El entorno converter
se utiliza para convertir los modelos que se entrenaron durante los experimentos del formato .h5
Keras a formatos comprensibles de Javascript (formatos tfjs_layers_model
o tfjs_graph_model
con archivos .json
y .bin
) para su uso posterior con TensorFlow.js en la aplicación de demostración.
# Create "converter" environment (from the project root folder).
python3 -m venv .virtualenvs/converter
# Activate "converter" environment.
source .virtualenvs/converter/bin/activate
# or if you use Fish...
source .virtualenvs/converter/bin/activate.fish
# Install converter requirements.
pip install -r requirements.converter.txt
La conversión de modelos keras
a formatos tfjs_layers_model
/ tfjs_graph_model
se realiza mediante tfjs-converter:
Por ejemplo:
tensorflowjs_converter --input_format keras
./experiments/digits_recognition_mlp/digits_recognition_mlp.h5
./demos/public/models/digits_recognition_mlp
️ Convertir los modelos a formatos comprensibles de JS y cargarlos directamente en el navegador puede no ser una buena práctica, ya que en este caso el usuario podría necesitar cargar decenas o cientos de megabytes de datos en el navegador, lo cual no es eficiente. Normalmente, el modelo se sirve desde el back-end (es decir, TensorFlow Extended) y, en lugar de cargarlo todo en el navegador, el usuario realizará una solicitud HTTP ligera para realizar una predicción. Pero dado que la aplicación de demostración es solo un experimento y no una aplicación lista para producción, y en aras de la simplicidad (para evitar tener un back-end en funcionamiento), estamos convirtiendo los modelos a formatos JS comprensibles y cargándolos directamente en el navegador.
Versiones recomendadas:
> 3.7.3
.>= 12.4.0
.>= 1.13.0
. En caso de que tenga la versión 3.7.3
de Python, es posible que experimente RuntimeError: dictionary changed size during iteration
al intentar import tensorflow
(consulte el problema).