Cómo utilizar TensorFlow 2.0 con Python

1

Redes neuronales con TensorFlow

2

Introducción a TensorFlow 2.0

Manejo y preprocesamiento de datos para redes neuronales

3

Uso de data pipelines

4

Cómo cargar bases de datos JSON

5

Cargar bases de datos CSV y BASE 64

6

Preprocesamiento y limpieza de datos

7

Keras datasets

8

Datasets generators

9

Aprende a buscar bases de datos para deep learning

10

Cómo distribuir los datos

11

Crear la red neural, definir capas, compilar, entrenar, evaluar y predicciones

Optimización de precisión de modelos

12

Métodos de regularización: overfitting y underfitting

13

Recomendaciones prácticas para ajustar un modelo

14

Métricas para medir la eficiencia de un modelo: callback

15

Monitoreo del entrenamiento en tiempo real: early stopping y patience

16

KerasTuner: construyendo el modelo

17

KerasTuner: buscando la mejor configuración para tu modelo

Almacenamiento y carga de modelos

18

Almacenamiento y carga de modelos: pesos y arquitectura

19

Criterios para almacenar los modelos

Fundamentos de aprendizaje por transferencia

20

Introducción al aprendizaje por transferencia

21

Cuándo utilizar aprendizaje por transferencia

22

Carga de sistemas pre-entrenados en Keras

23

API funcional de Keras

24

Uso sistemas pre-entrenados de TensorFlow Hub

Resultados de entrenamiento

25

Introducción a variables relevantes del TensorBoard

26

Análisis y publicación de resultados del entrenamiento

27

Introducción al despliegue de modelos en producción

28

Siguientes pasos con deep learning

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Cómo distribuir los datos

10/28
Recursos

Los datos de nuestro dataset son finitos y debemos distribuirlos para que el entrenamiento se haga con la máxima cantidad de ejemplos posibles a la vez que podamos verificar la veracidad del modelo con datos reales no vistos anteriormente, para esto creamos los subsets de entrenamiento, validación y pruebas.

¿Por qué distribuir datos?

Para entender esta necesidad, pasemos a una analogía con helados: de niño estás aprendiendo sobre los diferentes tipos de helados, tu padre tiene 100 helados, de los cuales usará 70 para enseñarte y 30 para ponerte a prueba; cada día te mostrará un helado diferente y te dirá su sabor hasta que se terminen y luego te preguntará por aquellos que no has visto.

Lo anterior hace alusión a los datos de entrenamiento y prueba, donde los primeros se usarán para entrenar el modelo (tendrán acceso a las etiquetas de salida) mientras que los segundos serán para predecir, el problema con esto es que solo estaremos comprendiendo la eficacia del modelo una vez finalizado el entrenamiento.

Para solucionar este problema y tener feedback en vivo del desempeño del modelo creamos el subset de validación, que hará el papel de pruebas durante cada época del entrenamiento, permitiendo monitorear el rendimiento de la red a través de las iteraciones.

Determinando los porcentajes de cada subset

La distribución de los datos a los diferentes subsets se puede determinar de diferentes maneras, donde la configuración promedio será de 70% para entrenamiento y 30% para pruebas (la mitad de este conjunto podrían destinarse a validación). Andrew NG (de las figuras más importantes del Deep Learning moderno) propone una estructura de 60% de entrenamiento, 20% de validación y 20% pruebas.

En caso de poseer pocos datos es recomendable aplicar la técnica de cross validation, que nos permitirá iterar el subset de validación entre los datos de entrenamiento, mientras que si tienes muchos datos puedes maximizar la cantidad de datos a entrenamiento en una estructura 90%/5%/5%.

Tipos de distribución de datos según la necesidad

Errores comunes al distribuir datos

Cuando distribuyas datos es posible encontrarte con errores altamente mortales en tiempo de ejecución porque no son de lógica ni compilación sino de estructuración, no serán detectados por la máquina y pueden ser muy costosos de detectar y solucionar.

Un error común es el de combinar erróneamente los datos de entrenamiento con los de testeo, lo que resultará en un rendimiento artificialmente alto para la red. Otro error común es el de clases desbalanceadas, es decir, la cantidad de ejemplos de diferentes clases es diferentes (supongamos 95 ejemplos de la clase A con 5 ejemplos de la clase B), incluso si todos los ejemplos los clasificamos como A, tendremos una precisión artificial de 95%. Si tienes muy pocos datos el modelo no podrá entrenarse dado que no tendrá ejemplos suficientes para abstraer los patrones a enseñar.

Errores comunes a la hora de distribuir datos

Con esto tienes las intuiciones necesarias para distribuir tus datasets, los valores exactos los podrás decidir basándote en las recomendaciones e intuiciones personales, pero ya puedes partir con total seguridad desde los hombros de los gigantes del machine learning.

Contribución creada por Sebastián Franco Gómez.

Aportes 4

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Recomiendo el curso de coursera de Andrew Ng y sus notas de stanford. Dato curioso Andrew Ng es uno de los fundadores de Coursera

Yo agregaría otro error común y el train tiene conexión con el de Test, pasa cuando se trabaja con grafos

Importancia de la Distribución de Datos:

Evitar el Sobreajuste:

  • Un modelo sobreajustado aprende las características específicas del conjunto de entrenamiento, pero no generaliza bien a nuevos datos. La distribución de datos ayuda a prevenir esto al crear un conjunto de validación que el modelo no ha visto antes, lo que obliga al modelo a aprender patrones más generales.

Evaluación del Rendimiento:

  • El conjunto de prueba, independiente del entrenamiento y la validación, proporciona una medida precisa del rendimiento final del modelo en datos no vistos.

Optimización de Hiperparámetros:

  • El conjunto de validación se utiliza para ajustar los hiperparámetros del modelo, como la tasa de aprendizaje o el número de capas, para encontrar la configuración que optimice el rendimiento.

Tipos de Distribuciones de Datos:

Conjunto de Entrenamiento (Training Set)

  • Es el subconjunto más grande utilizado para entrenar el modelo. Representa la mayor parte de los datos y es crucial para que el modelo aprenda los patrones y características relevantes para la tarea en cuestión.

Conjunto de Validación (Validation Set)

  • Es un subconjunto más pequeño utilizado para evaluar el rendimiento del modelo durante el entrenamiento. Se utiliza para ajustar los hiperparámetros del modelo y evitar el sobreajuste.

Conjunto de Prueba (Test Set)

  • Es un subconjunto completamente independiente que se utiliza para evaluar el rendimiento final del modelo una vez entrenado. No se utiliza durante el entrenamiento para evitar el sesgo.

Estrategias de Distribución de Datos:

División Aleatoria

  • La forma más simple es dividir aleatoriamente el conjunto de datos en los subconjuntos mencionados anteriormente. Esta estrategia es efectiva para conjuntos de datos homogéneos.

Estratificación

  • Cuando el conjunto de datos tiene clases desequilibradas, se utiliza la estratificación para garantizar que cada subconjunto tenga una proporción similar de clases. Esto ayuda a evitar sesgos en el entrenamiento y la evaluación.

Validación Cruzada (K-Fold Cross Validation)

  • Esta técnica divide el conjunto de datos en múltiples subconjuntos de entrenamiento y validación. El modelo se entrena y evalúa repetidamente en diferentes combinaciones de estos subconjuntos, proporcionando una estimación más robusta del rendimiento del modelo.

Tema muy importante!