Tu primer clasificador de imágenes con Python y Tensorflow

Ringa Tech
17 Jul 202120:43

Summary

TLDREn este video práctico, se aborda la clasificación de imágenes utilizando redes neuronales, con un enfoque en un caso real donde se desarrolla un modelo de aprendizaje automático para categorizar artículos de ropa según su fotografía. Se cubren conceptos fundamentales, desde la diferencia entre problemas de regresión y clasificación, hasta la entrada de imágenes en redes neuronales y la importancia de las capas ocultas y las funciones de activación para resolver problemas no lineales. El vídeo guía a los espectadores a través del proceso de construcción y entrenamiento de una red neuronal densa, utilizando un conjunto de datos de 70.000 imágenes de ropa etiquetadas, y luego se exploran técnicas para mejorar el rendimiento del modelo. Además, se destaca la limitación de las redes neuronales tradicionales en la clasificación de imágenes y se menciona la existencia de redes neuronales convolucionales, las cuales son más adecuadas para este tipo de tareas. El video concluye con una demostración de la red neuronal en acción y una invitación a suscriptores para aprender más sobre estas soluciones avanzadas en futuras entregas.

Takeaways

  • 📈 El vídeo comienza con una introducción a la clasificación de imágenes utilizando redes neuronales, enfocándose en un caso práctico para desarrollar un modelo de aprendizaje automático para categorizar artículos de ropa según su fotografía.
  • 🔍 Se destaca la diferencia entre problemas de regresión y clasificación en redes neuronales; mientras que en regresión la salida es un número, en clasificación la salida es una categoría.
  • 🖼️ Para dar como entrada una imagen a una red neuronal, se convierten las imágenes a escala de grises y se representan con valores numéricos por píxel, reduciendo el tamaño de la imagen para un rendimiento más eficiente.
  • 🧠 Se introduce el concepto de capas ocultas y funciones de activación como herramientas para que las redes neuronales puedan resolver problemas más complejos que los lineales.
  • 🔢 Se menciona la utilización de la función de activación 'reloj' (ReLU), que permite a las redes neuronales manejar problemas no lineales al transformar las salidas de las neuronas.
  • 🤖 Se describe el proceso de entrenamiento de una red neuronal, incluyendo la necesidad de un gran número de ejemplos para enseñarle a la red a clasificar correctamente.
  • 👕 Se habla sobre el conjunto de datos de 70.000 imágenes de ropa categorizadas previamente, proporcionado por la tienda de ropa y utilizado para entrenar la red neuronal.
  • ⚙️ Se detalla el proceso de normalización de los datos de entrada y la importancia de esta etapa en el entrenamiento de la red neuronal para mejorar los resultados y acelerar el proceso.
  • 📦 Se muestra cómo se estructura y compone el modelo de la red neuronal, incluyendo las capas de entrada, las capas ocultas y la capa de salida, así como la elección de la función de activación Softmax para la capa de salida.
  • 🔧 Se abordan técnicas para mejorar el rendimiento del entrenamiento, como el uso de lotes de datos y la repetición de conjuntos de datos con un orden aleatorio.
  • 📉 Se discuten los resultados del entrenamiento, incluyendo la precisión alcanzada y la función de pérdida, y se sugieren formas de mejorar el modelo mediante la experimentación con distintas arquitecturas de red.
  • 🚀 Se exploran las limitaciones de la red neuronal utilizada, como la falta de generalización cuando se presentan imágenes en diferentes posiciones y tamaños, y se menciona la existencia de redes neuronales convolucionales para abordar estos desafíos.

Q & A

  • ¿Qué tipo de problema de aprendizaje automático se aborda en el video?

    -El video aborda un problema de clasificación de imágenes utilizando redes neuronales.

  • ¿Cuál es la principal tarea que se le asigna al contratado en la tienda de ropa internacional?

    -La principal tarea es desarrollar un modelo de aprendizaje automático que categorice los artículos en base a su fotografía.

  • ¿Qué tipo de red neuronal se utiliza para resolver problemas de clasificación de imágenes?

    -Se utiliza una red neuronal densa, aunque el video sugiere que podría haber utilizado una red neuronal convolucional si esta última existiera en el contexto hipotético planteado.

  • ¿Cómo se representa una imagen en la capa de entrada de una red neuronal?

    -Una imagen se representa en la capa de entrada de una red neuronal dando un valor numérico a cada pixel, con 0 para totalmente negro y 255 para totalmente blanco.

  • ¿Por qué se reduce la resolución de las imágenes en el caso práctico del video?

    -Se reduce la resolución de las imágenes para hacer el procesamiento más eficiente, pasando de 10.000 píxeles a 784 píxeles, lo que reduce la complejidad de la red neuronal.

  • ¿Cuántas neuronas de salida tendría una red neuronal para clasificar diez categorías de ropa?

    -Una red neuronal para clasificar diez categorías de ropa tendría diez neuronas de salida.

  • ¿Qué son las capas ocultas en una red neuronal y qué propósito sirven?

    -Las capas ocultas son una o más capas adicionales en una red neuronal que se encuentran entre la capa de entrada y la capa de salida. Sirven para realizar transformaciones más complejas que las posibles con una sola capa de entrada y salida, permitiendo a la red resolver problemas no lineales.

  • ¿Qué función de activación se utiliza en la capa de salida de una red neuronal de clasificación?

    -Se utiliza la función de activación Softmax en la capa de salida de una red neuronal de clasificación para asegurar que la suma de las neuronas de salida sea 1, lo que facilita la interpretación de la salida como una distribución de probabilidad.

  • ¿Cómo se normalizan los datos de entrada en el video?

    -Se normalizan los datos de entrada dividiendo cada valor de pixel por 255, lo que transforma los valores de píxeles de un rango de 0 a 255 a un rango de 0 a 1.

  • ¿Cuál es el tamaño del lote utilizado en el entrenamiento de la red neuronal?

    -El tamaño del lote utilizado en el entrenamiento de la red neuronal es de 32.

  • ¿Qué tipo de conjunto de datos se utiliza para entrenar y probar la red neuronal?

    -Se utiliza el conjunto de datos Fashion MNIST, que contiene 70.000 imágenes de ropa en blanco y negro de 28x28 píxeles, categorizadas en 10 clases.

  • ¿Cuál es la precisión alcanzada por la red neuronal después del entrenamiento?

    -La precisión alcanzada por la red neuronal después del entrenamiento es alrededor del 88 por ciento, posiblemente un poco superior.

Outlines

00:00

😀 Introducción a la clasificación de imágenes con redes neuronales

El primer párrafo presenta el comienzo de un proyecto práctico de clasificación de imágenes utilizando redes neuronales. Se menciona que se abarcará desde la teoría hasta la implementación de un clasificador de imágenes funcional. Se destaca la necesidad de cubrir varios conceptos y se establece un escenario hipotético en el que se desarrolla el modelo: una tienda de ropa requiere un modelo de aprendizaje automático para categorizar artículos basados en fotografías. Además, se introduce la diferencia entre problemas de regresión y clasificación y se establece la estructura del modelo con 784 neuronas de entrada y 10 de salida.

05:02

📈 Conceptos fundamentales para la clasificación de imágenes

Este párrafo profundiza en los conceptos necesarios para la clasificación de imágenes. Se discute cómo representar una imagen en una red neuronal, reduciendo una imagen de 10.000 píxeles a 784 píxeles mediante un tamaño de 28x28 píxeles. Se introduce el tipo de red neuronal que se utilizará, una red neuronal densa, y se compara con la red neuronal convolucional, que no se usará en este caso. Además, se explora la limitación de las redes neuronales simples para resolver problemas no lineales y se presentan las capas ocultas y las funciones de activación como herramientas para abordar estas complejidades.

10:02

🤖 Arquitectura y entrenamiento de la red neuronal

El tercer párrafo se enfoca en la arquitectura de la red neuronal y su entrenamiento. Se describe la adición de dos capas ocultas con 50 neuronas cada una y la elección de la función de activación 'reloj'. Se destaca la importancia de las capas ocultas y las funciones de activación para permitir que la red resuelva problemas no lineales. Se menciona la necesidad de un gran número de ejemplos para entrenar la red y se habla sobre el conjunto de datos de 70.000 imágenes proporcionado por la tienda de ropa, que se utilizará para entrenar y probar el modelo.

15:02

🔍 Normalización de datos y construcción del modelo

Este párrafo cubre la normalización de los datos de entrada y la construcción del modelo de la red neuronal. Se aclara la necesidad de normalizar los datos de píxeles de 0 a 255 a un rango de 0 a 1 para mejorar el rendimiento del entrenamiento. Se detalla la creación del modelo secuencial con capas de entrada plana, dos capas ocultas densas y una capa de salida con la función de activación Softmax. Además, se menciona la importación de librerías y la preparación de los datos de entrenamiento y prueba.

20:03

🎯 Entrenamiento y evaluación del modelo

El quinto párrafo describe el proceso de entrenamiento del modelo y su evaluación. Se establece el tamaño del lote y se describe el uso de funciones para randomizar el orden de los datos durante el entrenamiento. Se habla sobre la duración y la complejidad del entrenamiento debido al gran número de ejemplos. Se muestra el progreso de la precisión y la función de pérdida a lo largo de las épocas y se menciona el uso del modelo entrenado para realizar predicciones. Además, se discuten las limitaciones del modelo, como la falta de generalización en imágenes donde el tamaño y la posición de los objetos varían, y se sugiere el uso de redes neuronales convolucionales para abordar estos desafíos.

🔧 Limitaciones y soluciones futuras

El sexto y último párrafo aborda las limitaciones del modelo actual y sugiere soluciones futuras. Se reconoce que el modelo tiene dificultades para generalizar cuando los objetos en las imágenes cambian de tamaño y posición. Se introduce el concepto de redes neuronales convolucionales como una forma de superar estas limitaciones, ya que son capaces de entender la estructura de las imágenes de manera más robusta. Se anima a los espectadores a suscribirse para recibir actualizaciones sobre el tema y se cierra el vídeo con una nota de despedida.

Mindmap

Keywords

💡Clasificación de imágenes

Es el proceso de organizar imágenes en categorías o clases. En el video, se utiliza una red neuronal para clasificar artículos de ropa en base a su fotografía, lo cual es un ejemplo de aprendizaje automático en la tarea de clasificación.

💡Redes neuronales

Son modelos de aprendizaje inspirados en el cerebro humano, compuestos de capas de unidades llamadas neuronas. En el video, se discute cómo las redes neuronales se pueden usar para convertir grados Celsius a Fahrenheit y para clasificar imágenes.

💡Regresión

Es un tipo de problema de aprendizaje automático donde la salida es un número. En el contexto del video, se menciona que en un problema de regresión, como predecir el valor de una casa, la red neuronal proporciona una salida numérica.

💡Problema de clasificación

Diferente a la regresión, en un problema de clasificación la salida es una categoría o clase. En el video, se busca que la red neuronal clasifique imágenes en categorías de ropa, por lo que requiere un número de salidas equivalente a las categorías posibles.

💡Convolutional Neural Network (CNN)

Es un tipo específico de red neuronal que se utiliza ampliamente en la clasificación de imágenes. Aunque no se utiliza en el ejemplo del video, se menciona como una red que podría manejar mejor el problema de clasificación de imágenes si no existiera la red neuronal densa.

💡Normalización de datos

Es el proceso de escalado de los valores de los datos para que estén en un rango específico, como de 0 a 1. En el video, se normalizan los datos de las imágenes para mejorar el rendimiento del entrenamiento de la red neuronal.

💡Función de activación

Son funciones matemáticas que se aplican en las redes neuronales para introducir no linealidad, lo que permite a la red resolver problemas más complejos. En el video, se utiliza la función 'reloj' como ejemplo de una función de activación.

💡Capas ocultas

Son capas intermedias en una red neuronal que no son de entrada ni de salida. Aportan flexibilidad y capacidad para el aprendizaje de relaciones complejas en los datos. En el video, se agregan dos capas ocultas a la red para mejorar su capacidad de clasificación.

💡Entrenamiento de la red

Es el proceso de hacer que la red neuronal aprenda a partir de un conjunto de datos de entrenamiento. En el video, se describe el entrenamiento de la red con 60,000 imágenes para que pueda clasificar correctamente las imágenes de ropa.

💡Set de datos

Es una colección de datos que se utiliza para entrenar y probar un modelo de aprendizaje automático. En el video, se utiliza un set de datos de 70,000 imágenes de ropa categorizadas para entrenar y probar la red neuronal.

💡Softmax

Es una función de activación utilizada comúnmente en la capa de salida de las redes neuronales de clasificación. En el video, se menciona que la función Softmax asegura que la suma de las salidas de las neuronas sea 1, lo que permite interpretar la salida como probabilidades.

Highlights

Comenzamos con la clasificación de imágenes utilizando redes neuronales.

El caso práctico consiste en desarrollar un modelo de aprendizaje automático para categorizar artículos de ropa según su fotografía.

Se cubren conceptos fundamentales para llevar el conocimiento de redes neuronales desde lo básico hasta su aplicación en la resolución de problemas complejos.

La diferencia entre problemas de regresión y clasificación en términos de la salida esperada del modelo.

La conversión de imágenes a valores numéricos para su procesamiento por una red neuronal.

La reducción de tamaño de las imágenes a 28x28 píxeles para mejorar la eficiencia del modelo.

La elección de una red neuronal densa para construir el modelo inicial.

La limitación de la red neuronal simple para resolver solo problemas lineales y la necesidad de capas ocultas y funciones de activación para abordar problemas más complejos.

La introducción de funciones de activación, como la función reloj, para permitir que la red neuronal maneje problemas no lineales.

La importancia de las capas ocultas y la configurabilidad que añaden a la red neuronal para resolver transformaciones complejas.

La normalización de datos de entrada para mejorar el rendimiento del entrenamiento de la red neuronal.

El uso de un conjunto de datos de 70.000 imágenes categorizadas para entrenar y probar el modelo.

La construcción del modelo secuencial con capas de entrada plana, capas ocultas densas y una capa de salida con la función de activación softmax.

El entrenamiento del modelo en lotes para aumentar la eficiencia y la velocidad del proceso.

La precisión del modelo, que alcanza alrededor del 88% después del entrenamiento.

La limitación de la red neuronal para manejar imágenes donde los datos de entrada cambian de posición, tamaño o color.

La introducción de las redes neuronales convolucionales como solución a las limitaciones encontradas.

Transcripts

play00:00

hoy al fin comenzamos con la

play00:02

clasificación de imágenes con redes

play00:03

neuronales y lo haremos con un caso

play00:05

práctico donde resolverá todo paso a

play00:06

paso para que al final del vídeo tengas

play00:08

un clasificador de imágenes funcional y

play00:10

lo probaremos de varias maneras para ver

play00:12

cómo funciona y qué le podemos mejorar

play00:14

para lograrlo tenemos que cubrir y

play00:16

aprender varios conceptos y en este

play00:17

vídeo cubriremos todo así que agarro un

play00:19

café otro de nate los dedos y comencemos

play00:21

imagina que acabas de ser contratado por

play00:23

una tienda de ropa internacional y el

play00:26

primer tarea es desarrollar un modelo de

play00:27

aprendizaje automático que categoriza

play00:29

todos los artículos en base a su

play00:31

fotografía

play00:33

imagina también que todo lo que conoces

play00:35

acerca de redes neuronales es lo que

play00:37

vimos en el vídeo anterior una red

play00:39

neuronal simple que aprende a convertir

play00:41

grados celsius y fahrenheit si no lo has

play00:43

visto sería buena idea que lo hagas

play00:44

antes de continuar cómo puedes tomar lo

play00:46

que aprendimos en ese vídeo y aplicarlo

play00:48

aquí para lograrlo necesitamos cubrir

play00:49

seis puntos importantísimos que llevarán

play00:52

tu conocimiento de redes neuronales de

play00:53

aquí a cómo porque veamos el reto que

play00:56

tenemos y resolvamos todo paso a paso

play00:58

[Música]

play01:00

para empezar el problema del vídeo

play01:01

anterior era de regresión en los

play01:04

problemas de regresión la salida del

play01:06

modelo o red neuronal es un número por

play01:08

ejemplo en ese caso la red daba como

play01:09

salida los grados fahrenheit que pueden

play01:11

ser 10 20 100 menos 15 etcétera un

play01:15

simple número otro ejemplo de regresión

play01:17

sería una red que intente predecir el

play01:19

valor de una casa recibe como entrada

play01:21

las características de la casa como sus

play01:23

metros cuadrados número de baños cuarto

play01:25

si tiene alberca o no etcétera y la

play01:27

salida sería el precio estimado de igual

play01:29

manera es un número dos el problema de

play01:31

hoy no es un problema de regresión es un

play01:33

problema de clasificación debemos

play01:35

recibir como entrada la imagen y la

play01:37

salida debe decirnos a qué categoría

play01:39

pertenece por lo tanto si tenemos diez

play01:42

categorías posibles nuestra red tendrá

play01:43

diez neuronas de salida y nos deberá

play01:46

decir a qué categoría cree que pertenece

play01:48

y aquí nos metemos al segundo tema

play01:50

[Música]

play01:52

dar como entrado un número como los

play01:53

grados celsius a una red neuronal es

play01:55

fácil pero como le damos como entrada

play01:57

una imagen cubre un poco de esto en mi

play01:59

primer vídeo de visión artificial pero

play02:01

si tomamos una imagen y la convertimos a

play02:03

blanco y negro podemos dar un valor

play02:05

numérico a cada pixel el número 0 sería

play02:08

para totalmente negro y 255 para

play02:10

totalmente blanco si tomamos como

play02:12

ejemplo una imagen de 100% píxeles

play02:14

significa que tenemos 10.000 píxeles

play02:17

cada uno con un valor entre 0 y 255

play02:19

podemos tomar esos 10.000 píxeles e ir

play02:22

colocando cada uno en una neurona

play02:24

distinta en la capa de entrada de

play02:25

nuestra red 10.000 neuronas en la capa

play02:28

de entrada no es exagerado más o menos

play02:31

en general no pero para hacer esto más

play02:33

eficiente lo reduciremos al mínimo

play02:35

posible reduciremos las imágenes a 28

play02:38

por 28 píxeles de modo que tendremos 784

play02:41

píxeles entrando en 784 neuronas de

play02:44

entrada a la red con esto ya sabemos que

play02:46

crearemos una red con 784 neuronas de

play02:49

entrada y 10 neuronas de salida ahora la

play02:52

duda es

play02:52

[Música]

play02:54

qué tipo de red neuronal vamos a

play02:55

utilizar hay muchos tipos que sirven

play02:58

para muchas cosas para los que ya saben

play03:00

del tema sabrán que hay un tipo de red

play03:01

llamada red neuronal convolución al la

play03:03

cual es muy utilizada para clasificación

play03:05

de imágenes sin embargo y quédate

play03:07

conmigo pero imagina por un momento que

play03:09

este tipo de red no existe no ha sido

play03:11

inventada solo existe la red neuronal

play03:13

densa la regular como la que usamos en

play03:15

el vídeo anterior y construiremos sobre

play03:17

ella y verás cómo poco a poco iremos

play03:19

descubriendo cosas hasta inventar

play03:21

nosotros mismos las redes neuronales

play03:22

convolución ales pero bueno con eso ya

play03:25

sabemos qué tipo de red vamos a utilizar

play03:26

ahora

play03:29

ahora

play03:31

la red neuronal que vimos en el vídeo

play03:33

anterior era tan simple que solo nos

play03:35

sirve para resolver problemas simples

play03:36

por ejemplo convertir grados celsius y

play03:38

fahrenheit es una ecuación lineal la

play03:41

conversión se puede graficar con una

play03:42

línea esa red solo puede resolver

play03:45

problemas lineales quizá este extraño

play03:48

comparar salidas de redes normales con

play03:49

ecuaciones pero quédate conmigo y veamos

play03:51

algunos ejemplos mira esta imagen como

play03:54

puedes ver tiene puntos naranjas y

play03:55

azules y pongamos los de objetivo

play03:57

diseñar una red neuronal para que

play03:59

intente graficar una línea que separe

play04:01

los puntos naranjas de los azules

play04:02

visualmente es muy simple podemos ver

play04:04

que una línea por aquí le permitiría

play04:06

hacer la división veamos como lo haría

play04:08

una red neuronal

play04:10

como puedes ver se ajusta muy rápido y

play04:12

logra encontrar la línea reiniciemos

play04:14

nuevamente para que comience de manera

play04:16

aleatoria e intentemos de nuevo

play04:19

otra vez no encuentra muy fácil así fue

play04:21

el entrenamiento que logró que nuestra

play04:23

primera red aprendiera convertir grados

play04:25

celsius y fahrenheit sin embargo qué

play04:27

pasa si tenemos una gráfica como ésta

play04:29

como puedes ver tenemos puntos azules

play04:31

aquí aquí y aquí y puntos naranjas aquí

play04:34

aquí y aquí ninguna línea podría ser una

play04:37

división adecuada pero dejemos que

play04:39

intente a ver qué pasa

play04:41

podemos ver que intenta pero como sólo

play04:43

sabe graficar una línea invariablemente

play04:45

lo va a ser mal intentemos de nuevo

play04:48

ok está imposible necesitamos darle a la

play04:52

red más herramientas para que pueda

play04:54

resolver problemas más complejos y no

play04:56

esté limitada a resolver solo ecuaciones

play04:57

lineales estas herramientas son las

play04:59

capas ocultas y las funciones de

play05:01

activación

play05:02

[Música]

play05:03

en una red neuronal como la del primer

play05:05

vídeo donde tenemos la entrada conectada

play05:07

a la salida tenemos muy poco espacio

play05:09

para transformaciones solo podemos

play05:12

resolver problemas que sean una

play05:13

multiplicación y una suma si queremos

play05:16

dar a la red más espacio para que

play05:17

realice transformaciones más complejas

play05:19

necesitamos agregar una o más capas

play05:22

ocultas estas capas siguen las mismas

play05:24

reglas de hacer multiplicaciones y sumas

play05:26

sin embargo al agregarlas a la red

play05:27

nuestra red ahora cuenta con más

play05:29

opciones y caminos en donde puede hacer

play05:31

más operaciones lineales para el final

play05:33

unir el resultado digamos que es

play05:36

imaginamos que nuestra red tiene

play05:37

perillas de control antes teníamos dos

play05:39

un peso y un sesgo que se podían ajustar

play05:41

si agregamos dos capas ocultas con tres

play05:44

neuronas cada una

play05:45

ahora tenemos 22 perdidas de control es

play05:47

decir 15 pesos y 7 sesgos que la red

play05:50

puede ajustar durante el entrenamiento

play05:52

como tiene más perillas de control la

play05:53

red es mucho más configurable sin

play05:56

embargo las capas ocultas por sí solas

play05:58

siguen teniendo el inconveniente de que

play05:59

solucionan solamente problemas lineales

play06:01

ahora tenemos muchas neuronas haciendo

play06:03

más transformaciones pero al final todas

play06:05

siguen siendo lineales esto nos lleva a

play06:08

nuestra siguiente herramienta

play06:09

[Música]

play06:10

para que nuestras pobres neuronas salgan

play06:12

del infierno que solamente resolver

play06:14

problemas lineales una vez que una

play06:16

neurona asuma suceso y va a dar su

play06:17

resultado la pasaremos por una función

play06:20

llamada comúnmente función de activación

play06:22

digamos que tenemos esta neurona la

play06:25

neurona recibe como entrada el número 10

play06:27

el setsuv es de 5 entonces al sumarlo la

play06:29

salida de la neurona sería 15 pero

play06:32

espera que antes de enviar ese 15 como

play06:34

salida hacemos ese 15 por una función

play06:36

hay muchas funciones posibles y

play06:37

probablemente después haga un vídeo

play06:38

especial para eso pero imagina que

play06:40

tenemos esta función

play06:42

esta función llamada reloj lo que hace

play06:44

es si el número es mayor a 0 mantenlo

play06:46

igual no le cambies nada pero si es

play06:48

menor a 0 es decir un número negativo

play06:50

entonces el resultado será ser no acepta

play06:53

números negativos en este ejemplo un 15

play06:56

daría como salida 15 un 40 daría un 40

play06:59

pero un -8 por ser negativo daría a ser

play07:02

y un 12 de 340 también daría ser simple

play07:06

para que si pues sonar tonto por este

play07:08

pequeño cambio unido a las capas ocultas

play07:10

permiten que una rueda poniendo a

play07:11

resolver problemas y no lineales si

play07:14

hacemos eso solamente con una neurona el

play07:15

resultado no es muy

play07:17

pero si usamos eso en todas las neuronas

play07:19

y agregamos capas ocultas la red puede

play07:21

aprender a hacer transformaciones más

play07:23

complejas con el simple hecho de ya no

play07:25

estar condenado a resolver sólo

play07:26

problemas lineales lo sacamos del

play07:28

infierno lineal y puede ahora probar

play07:30

muchas cosas en su proceso de

play07:31

entrenamiento para intentar encontrar

play07:32

soluciones más interesantes a los

play07:34

problemas hay obviamente mucho más que

play07:37

cubrir en los temas de las capas ocultas

play07:38

en las funciones de activación

play07:40

pero esto suficiente por lo pronto para

play07:41

continuar de momento luego que yorke te

play07:43

lleves es que estas dos herramientas

play07:44

juntas la abren a la red del mundo de

play07:46

posibilidades para resolver problemas

play07:48

complejos

play07:49

si quieres otros vídeos de un entre

play07:50

detalle de esto por favor déjame un

play07:52

comentario y si no también cuéntame tu

play07:54

opinión de este vídeo astori que te ha

play07:55

gustado por favor regálame nos gusta

play07:57

regresamos a nuestra gráfica de puntitos

play07:59

se agregó yo por ejemplo una capa oculta

play08:01

con unas cuantas neuronas por sí sólo no

play08:03

puede salir del infierno línea pero si

play08:06

además de las capas ocultas activamos

play08:07

que todas utilizan la función de

play08:09

activación reloj

play08:11

a podemos ver que ya está encontrando

play08:13

resultados más interesantes quizás

play08:15

todavía no logra hacer una buena

play08:16

separación pero al menos su cerebro ya

play08:18

evolucionó y podemos experimentar más

play08:20

agreguemos más neuronas a la capa

play08:22

pública

play08:24

como podemos ver de manera rara pero

play08:26

logra solucionar el problema

play08:28

dijimos cuatro neuronas programamos una

play08:31

capa adicional

play08:38

con esto no logra resolver y podemos ver

play08:39

los intentos que hace por hacerlo mejor

play08:41

podemos agregar tantas capas ocultas

play08:43

como queramos agreguemos 6 a ver qué

play08:45

pasa

play08:56

en una u otra manera lo logra hacer aquí

play08:58

ya es parte de tu proceso experimentar

play09:00

con distintas arquitecturas y ver cuál

play09:01

funciona mejor más rápido pero creo que

play09:04

con esto queda claro que con estas dos

play09:06

herramientas podemos resolver problemas

play09:07

más complejos usando redes neuronales

play09:09

para terminar en nada más por diversión

play09:11

veamos este caso más complejo este

play09:13

espiral aquí aunque tengamos seis capas

play09:15

ocultas no lo podemos resolver

play09:19

podemos dejar solo dos pero con más

play09:21

neuronas

play09:23

y con eso logrará resolver el problema

play09:25

te dejaré la liga esta herramienta que

play09:27

estoy utilizando la descripción del

play09:28

vídeo aunque ya cubrimos todo lo

play09:30

necesario volvamos ahora sí a nuestro

play09:32

caso nuestra red tiene entonces 784

play09:36

neuronas de entrada 10 neuronas de

play09:38

salida y para comenzar agregamos dos

play09:40

capas ocultas cada una de 50 neuronas

play09:42

como vimos después podemos agregar o

play09:45

quitar capas y neuronas y experimentar

play09:46

estamos listos para comenzar el

play09:48

entrenamiento sólo que

play09:51

se nos olvidaba algo para entrenar una

play09:54

red necesitamos muchos gamers en nuestro

play09:56

vídeo anterior usamos 7 ejemplos pero

play09:58

era un problema muy simple ahora

play10:00

queremos que se clasifiquen las imágenes

play10:02

en 10 categorías entonces necesitamos

play10:03

muchos ejemplos de cada categoría cuanto

play10:06

necesitamos mil 5000 tenemos que ir por

play10:09

nuestra cámara y tomarle fotos a nuestra

play10:10

ropa nada bueno sí pero alguien más ya

play10:13

lo hizo por nosotros por este mismo

play10:15

problema pasó ya la tienda salando una

play10:17

tienda de ropa que se dio a la laboriosa

play10:19

tarea de crear un set de datos de 70.000

play10:21

imágenes cada una categorizada

play10:22

correctamente para poder entrenar redes

play10:24

de este tipo y aparte lo abrió al

play10:26

público en hip hop para que lo usemos

play10:27

como queramos gracias al andado

play10:30

como puedes ver todas son imágenes en

play10:32

blanco y negro de 28 por 28 píxeles y

play10:34

tenemos playeras pantalones zapatos

play10:36

tenis bolsas etcétera de hecho están

play10:38

categorizadas en estas 10 opciones

play10:41

lo que haremos será descargar ese set de

play10:43

datos y utilizar 60.000 imágenes para

play10:45

entrenar en la red y las otras 10.000

play10:47

para probar que quedó entrenada

play10:48

correctamente

play10:49

al hacer esto confirmamos que la red se

play10:51

puede predecir correctamente imágenes

play10:53

que no vio durante el entrenamiento

play10:54

podemos programar ya podemos programar

play10:56

claro que sí ya vamos para allá

play10:58

otra vez utilizaremos nuestra bonita

play10:59

herramienta cola para programar en el

play11:01

explorador hay mientras habrá cola

play11:03

quiero agradecer estas personas

play11:05

[Música]

play11:09

estos son mismo escenas open game más

play11:11

nuevo y su apoyo me ayuda muchísimo para

play11:13

continuar haciendo este tipo de vídeos

play11:14

si te sirve y te gusta mi contenido y te

play11:16

gustaría apoyarme para que haga más

play11:18

dejaré la liga de mi petro en la

play11:19

descripción del vídeo y si nuestras

play11:21

posibilidades con que des clic en me

play11:22

gusta y me dejes un comentario es más

play11:23

que suficiente muy bien ya estamos en

play11:25

cola para empezar importaremos la

play11:27

librería de pensarlo para trabajar

play11:29

además importaremos otra llamada tensor

play11:31

flow data sets el set de datos de sadam

play11:33

no podemos descargarlo de manera simple

play11:35

utilizando esta librería

play11:37

ahora descarguemos el set de datos con

play11:39

sus metadatos tensor flow data se tiene

play11:42

muchos desde datos para mil cosas desde

play11:44

imágenes audio traducciones etcétera que

play11:46

seguramente después veremos el que

play11:47

usaremos desalando se llama fashion en

play11:49

mí es importante especificar estos dos

play11:51

atributos adicionales para que se

play11:52

descargue con todos los metadatos que

play11:54

necesitamos

play11:56

esperemos un poco que termine de

play11:57

descargarlo aunque salgan algunas líneas

play11:59

rojas no pasa nada

play12:04

ya que termino podemos imprimir el valor

play12:06

de los metadatos y nos dice la

play12:08

información del set que acabamos de

play12:09

descargar además de la información

play12:11

general podemos ver que tiene 60.000

play12:13

datos para entrenamiento y 10.000 para

play12:15

problemas pongamos cada conjunto de

play12:17

datos en una variable diferente para

play12:18

utilizarlos

play12:19

[Música]

play12:26

ya tenemos separados los datos de

play12:28

entrenamiento y pruebas los metadatos

play12:30

además traen los nombres de las

play12:31

categorías que existen en el set

play12:33

asignamos alguna variable y podemos

play12:35

imprimirlos para verlos

play12:36

[Música]

play12:40

como tip en cola puedes presionar

play12:42

control enter y se ejecuta el bloque de

play12:44

código

play12:44

ok aquí podemos ver que el índice 0 es

play12:46

camiseta el índice uno es pantalón

play12:48

tenemos suéter vestido saco etcétera

play12:50

hasta llegar al índice 9 que es bombo

play12:52

team

play12:53

ahora cuando entrenamos una red

play12:54

normalmente queremos normalizar los

play12:56

datos es decir hacer que todas las

play12:58

entradas sean números entre 0 y 1 eso

play13:01

ayuda mucho acelerar el entrenamiento y

play13:02

mejorar los resultados actualmente los

play13:04

datos de entrada se recibirían de 0 a

play13:06

255 por ser los valores de los píxeles

play13:09

así que usaremos una función de

play13:10

normalización para dividir cada pixel

play13:12

entre 255

play13:20

después pasaremos todos los datos de

play13:22

entrenamiento y pruebas por esa función

play13:23

de normalización

play13:28

finalmente agregaremos los datos al

play13:30

caché con eso el entrenamiento se hace

play13:32

mucho más rápido ya que guarda los datos

play13:33

en memoria en lugar de disco

play13:38

muy bien hasta el momento hemos

play13:39

trabajado con puros textos pero no hemos

play13:41

visto ninguna imagen así que pongamos un

play13:44

poquito de código que me pasó rápido

play13:45

porque no tiene mucho que ver con

play13:46

inteligencia artificial para mostrar la

play13:48

imagen

play13:54

esta es la primera imagen un suéter

play13:56

podemos imprimir varias imágenes y que

play13:59

nos muestre cuál es la categoría

play14:00

correcta con la que viene etiquetadas

play14:02

[Música]

play14:12

ok ahora pasemos a ser el modelo similar

play14:15

al vídeo anterior iniciaremos nuestra

play14:16

variable modelo y usaremos una red de

play14:18

tipo secuencial

play14:21

esta vez y definiremos nuestra capa de

play14:23

entrada manualmente y usaremos una de

play14:24

tipo flat en nuestros datos de entrada

play14:27

que daremos a la red vienen en una forma

play14:29

de 28 por 28 píxeles con un canal por

play14:31

ser blanco y negro por lo tanto

play14:33

especificaremos eso como parámetro a la

play14:35

capa y la capa flat end se encarga de

play14:36

convertir esta matriz y aplastarla que

play14:39

eso quiere decir flat end a una sola

play14:41

dimensión con 784 neuronas en donde se

play14:44

recibirá cada pixel ok ahora agreguemos

play14:46

las dos capas ocultas densas con 50

play14:49

neuronas cada una y cada una con la

play14:50

activación reloj y al final agregamos

play14:53

nuestra capa de salida con 10 neuronas a

play14:56

esta indicaremos la función de

play14:57

activación soft mans

play14:59

no quiero alargar demasiado el vídeo

play15:00

explicando esta pero en resumen se usa

play15:02

la función soft max como función de

play15:04

activación en la capa de salida en las

play15:06

redes de clasificación para asegurar que

play15:08

la suma de las neuronas de salida

play15:09

siempre nos dé 1 por ejemplo si la red

play15:11

cree que el artículo es una camiseta

play15:12

puede que camiseta tenga punto 8 saco

play15:15

punto 1 siempre la suma de todos nos da

play15:17

el valor de 1 y al final solo vemos cuál

play15:19

es el que tiene el mayor número y esa es

play15:20

la predicción de la red porque ya con

play15:22

nuestro modelo listo lo compilamos

play15:25

[Música]

play15:27

al igual que nuestra primera red

play15:28

utilizamos adán como optimizador y la

play15:30

función de pérdida usaremos esta otra

play15:32

que tiene nombre muy feo pero al igual

play15:34

que software que se usen las redes de

play15:35

clasificación

play15:40

muy bien entrenar una red con siete

play15:42

ejemplos como hicimos anteriormente fue

play15:44

muy fácil pero ahora tenemos 70.000

play15:46

ejemplos para hacer que la red entrene

play15:48

más rápido le podemos decir que lo haga

play15:49

en lotes definamos un tamaño de lote de

play15:52

32 ahora ajustaremos algunas propiedades

play15:54

de los datos de entrenamiento y pruebas

play15:56

como daremos varias vueltas al set de

play15:57

datos en el entrenamiento queremos que

play15:59

se haga de manera aleatoria y no siempre

play16:01

en un mismo orden parece usaremos dos

play16:03

funciones repeat y jaffa con los cuales

play16:05

el orden de los datos será aleatorio y

play16:08

azul le tenemos que decir cuántos datos

play16:10

queremos que son todos los 60.000 de

play16:13

hecho podemos definir los variables aquí

play16:14

arriba de una vez para tener el número

play16:15

de ejemplos de entrenamiento y pruebas

play16:20

si los imprimimos nos dan los 60.000 y

play16:22

10.000 lo que hacemos aquí esa variable

play16:25

finalmente usamos la opción batch para

play16:28

decirle el tamaño del lote de

play16:29

entrenamiento y que se puede hacer más

play16:31

rápido con el set de datos de pruebas

play16:33

solo usaremos la opción de batch

play16:35

al fin estamos listos para entrenar a

play16:37

nuestra red ha sido un camino largo pero

play16:39

ya llegamos

play16:41

para entrenar usamos la función fit

play16:43

especificamos los datos de entrenamiento

play16:45

cuantas vueltas queremos darle a los

play16:47

datos

play16:48

digamos 5 además de especificamos esta

play16:50

opción de este exploit porque es muy

play16:52

relevante porque -según tensor se lo va

play16:54

a quitar

play16:55

comenzamos a entrenar

play16:58

podemos ver que a diferencia de nuestra

play17:00

primera red se tarda más lo cual tiene

play17:02

sentido ya que el problema es mucho más

play17:03

complejo

play17:04

en cada época o vuelta a los datos

play17:06

podemos ver la precisión generalmente

play17:09

debemos terminar con una precisión de

play17:10

alrededor del 88 por ciento quizá un

play17:12

poco superior veamos el resultado de la

play17:14

función de pérdida en cada época

play17:16

[Música]

play17:19

ahora el modelo está listo para realizar

play17:20

predicciones para eso lo haré de varias

play17:23

maneras aquí en cola con los datos de

play17:24

prueba y luego mostraré que se puede

play17:26

exportar el modelo entrenado para

play17:27

probarlo por ejemplo en un explorador

play17:29

comenzamos aquí escribir este código

play17:31

rápido que no es de inteligencia

play17:33

artificial sino de matt proclive

play17:34

entonces no vemos relevante pero nos

play17:36

sirve para imprimir 25 imágenes del set

play17:38

de pruebas y que intente predecir cada

play17:40

uno si predice bien saldrá en una barra

play17:42

azul si predice mal saldrá en rojo

play17:45

[Música]

play17:49

muy bien aquí podemos ver que aquí se

play17:51

equivocó en la predicción

play17:55

muy bien por último te dejaré aquí la

play17:56

manera de que tomes cualquier dato del

play17:58

set de pruebas que tú quieras y que te

play17:59

imprima la predicción de la red

play18:02

el enlace para este collage estará en la

play18:03

descripción del vídeo ahora podría dejar

play18:06

el vídeo hasta aquí y decir que ya

play18:07

tenemos un clasificador de ropa con un

play18:09

90% de precisión de hecho la mayoría de

play18:11

los vídeos así lo deja pero quiero

play18:13

mostrar qué problemas tienen porque los

play18:15

tiene para ver cómo podemos mejorarlo y

play18:17

aprender más voy a exportar el modelo

play18:19

que ya entrenamos para usarlo en un

play18:20

explorador contento el flow jota es como

play18:23

exportar le pasarlo en el probador

play18:24

etcétera puedo verlo en otro vídeo si te

play18:26

interesa dejamos en los comentarios

play18:29

y

play18:31

ok en esta pequeña página importa el

play18:33

modelo y ahora funciona totalmente en el

play18:35

explorador agregue un cuadro para

play18:37

dibujar e intentar que el modelo me

play18:39

adivine lo que dibuje veamos

play18:42

ok muy bien intentemos otro

play18:46

[Música]

play18:49

disculpen mis habilidades de dibujo

play18:52

ok en general se ve bien pero veamos

play18:55

cuáles son las limitantes que tienen

play18:56

para empezar siempre me da una

play18:58

predicción aunque dibuje basura

play19:01

ah

play19:04

ah

play19:06

esto es inherente de cómo funciona este

play19:08

tipo de redes sí o sí me va a intentar

play19:10

predecir algo aunque no caiga claramente

play19:12

en las categorías eso no es tal cual una

play19:14

limitante solo algo gracioso la otra es

play19:17

que está frágil si no pongo el dibujo

play19:19

similar a cómo está en el entrenamiento

play19:21

no me predice muy bien por qué pasa esto

play19:23

las redes neuronales como estas son

play19:25

buenísimas resolviendo problemas de

play19:27

regresión y clasificación donde los

play19:29

datos de entrada no cambian de posición

play19:31

en el ejemplo que hablamos de la

play19:32

predicción del valor de una casa la

play19:34

misma neurona de entrada siempre va a

play19:36

recibir los metros cuadrados y la misma

play19:38

neurona siempre va a recibir el número

play19:39

de cuartos etcétera no decidimos después

play19:41

cambiar el orden de las entradas porque

play19:43

confundiría en la red

play19:44

en estas situaciones estas redes hacen

play19:45

predicciones bastante acertadas y de

play19:47

hecho son muy utilizadas en la industria

play19:49

sin embargo en este caso que recibimos

play19:51

una imagen o una sandalia puede estar

play19:53

así o así o así y cambiando de tamaño y

play19:55

posición por lo que la red no puede

play19:57

generalizar correctamente la estamos

play20:00

llevando al límite de sus capacidades de

play20:02

hecho tengo otro vídeo de hace años

play20:03

donde dice esto pero para números

play20:04

escritos si te interesa debido a estas

play20:07

limitantes porque se inventaron las

play20:08

redes neuronales convolución a les

play20:09

necesitamos una red que no intente

play20:11

aprenderse las poses

play20:12

de los píxeles como lo está intentando

play20:14

hacer esta red sino una que realmente

play20:16

intenté entender lo que está viviendo lo

play20:18

que existe en la imagen y no importe su

play20:21

color su tamaño o posición etcétera es

play20:24

un problema bastante interesante y sus

play20:25

soluciones aún más interesante quiere

play20:27

saber cómo lo resolveremos suscríbete

play20:29

para que te motive y que esta cosa el

play20:31

siguiente vídeo y hasta pronto

play20:34

[Música]

play20:35

[Aplausos]

play20:39

[Música]

Rate This

5.0 / 5 (0 votes)

Related Tags
Redes NeuronalesClasificación de ImágenesAprendizaje AutomáticoTensorFlowIntroducción a la IAProgramación en ColabFunciones de ActivaciónNormalización de DatosOptimización de RedesEjemplo PrácticoTecnología de IAMachine Learning
Do you need a summary in English?