Aprende a PROGRAMAR una RED NEURONAL - Tensorflow, Keras, Sklearn

Dot CSV
18 Jun 201918:43

Summary

TLDREste vídeo ofrece una introducción a la programación de redes neuronales, explicando cómo funcionan y cómo se pueden implementar desde cero. Seguidamente, presenta varias herramientas y bibliotecas como TensorFlow y Keras que facilitan el proceso, permitiendo construir y entrenar redes neuronales de manera más eficiente. El vídeo también promociona un curso de Inteligencia Artificial de Academy Point y Jay, destacando la importancia de la simplicidad y flexibilidad al elegir las herramientas de programación para el machine learning.

Takeaways

  • 🧠 Se discute sobre redes neuronales y cómo funcionan, incluyendo una breve introducción a su programación desde cero.
  • 📈 Se menciona la existencia de herramientas que facilitan el uso de algoritmos de deep learning sin requerir un conocimiento profundo de la programación.
  • 🔧 Se destaca TensorFlow y PyTorch como herramientas importantes en el campo de la inteligencia artificial.
  • 🎓 Se presenta un curso de la 'Academy Punto y' enfocado en inteligencia artificial, con un enfoque en la formación intensiva y la oportunidad de aprender de expertos.
  • 💡 Se aborda la idea de que al aumentar la abstracción en las herramientas de programación, se gana simplicidad pero se pierde flexibilidad en el diseño de las arquitecturas.
  • 🛠️ Se explica cómo se pueden construir redes neuronales desde los cimientos, implementando cada paso necesario para su funcionamiento, como la propagación hacia adelante y la retropropagación del error.
  • 🌐 Se introduce la librería de diferenciación automática y cómo esta puede calcular automáticamente las derivadas parciales necesarias para la optimización de una red neuronal.
  • 🔗 Se describe el concepto de 'grafo computacional' en TensorFlow, que representa todas las operaciones que se ejecutan en una red neuronal.
  • 🔄 Se detalla el proceso de entrenamiento de una red neuronal en TensorFlow, desde la definición de los parámetros hasta la ejecución del proceso de auto-diferenciación y entrenamiento.
  • 📈 Se compara la simplicidad de usar TensorFlow con la flexibilidad de diseñar arquitecturas personalizadas al programar desde cero.
  • 🏢 Se habla sobre las diferentes capas de abstracción en el aprendizaje profundo, desde la programación desde cero hasta el uso de interfaces de alto nivel como Keras.

Q & A

  • ¿Qué es una red neuronal y cómo funciona?

    -Una red neuronal es una estructura de computación inspirada en la red de neuronas del cerebro humano, compuesta de nodos o unidades que simulan las neuronas y conexiones que simulan las sinapsis. Funcionan mediante la propagación y transformación de señales de entrada a través de las capas de la red, con el objetivo de modelar y resolver problemas complejos.

  • ¿Por qué programar una red neuronal desde cero puede ser desafiante?

    -Programar una red neuronal desde cero es desafiante porque requiere un conocimiento profundo de los procesos matemáticos y algorítmicos subyacentes, como la multiplicación matricial, la propagación del error, y la optimización mediante el descenso del gradiente. Además, cualquier cambio en la arquitectura de la red requiere recalcular manualmente las derivadas y ajustar el código, lo que aumenta la complejidad.

  • ¿Qué herramientas se mencionan en el script para facilitar el aprendizaje y la implementación de redes neuronales?

    -El script menciona herramientas como TensorFlow y PyTorch, las cuales son bibliotecas de código abierto para el aprendizaje automático y la computación numérica, especialmente diseñadas para facilitar el trabajo con redes neuronales y el aprendizaje profundo.

  • ¿Qué es la Academy Point y qué ofrece en relación con la inteligencia artificial?

    -La Academy Point es un centro de formación que se dedica específicamente a la inteligencia artificial, con un enfoque en la formación intensiva y práctica. Ofrece bootcamps y cursos que incluyen formación en machine learning y deep learning, y cuenta con graduados que han trabajado para empresas como Google o Microsoft.

  • ¿Cómo se puede beneficiar de las bibliotecas de diferenciación automática en el aprendizaje profundo?

    -Las bibliotecas de diferenciación automática, como TensorFlow y PyTorch, se encargan de calcular automáticamente las derivadas parciales necesarias para la optimización de las redes neuronales. Esto simplifica enormemente el proceso de diseño y entrenamiento de modelos, ya que se reduce la necesidad de implementar manualmente el cálculo de las derivadas y la programación de la retropropagación.

  • ¿Qué es un 'grafo computacional' en el contexto de las redes neuronales?

    -Un grafo computacional es una representación de las operaciones que se realizan en una red neuronal, donde cada nodo del grafo puede representar una variable de entrada, una salida o una operación. Este concepto es fundamental para la diferenciación automática, ya que permite a las bibliotecas de aprendizaje automático rastrear y optimizar el flujo de datos y las transformaciones a través de la red.

  • ¿Cómo se abstrae la programación de redes neuronales al utilizar APIs de alto nivel como Keras?

    -Al utilizar APIs de alto nivel como Keras, la programación de redes neuronales se abstrae允许用户通过组合 diferentes tipos de capas predefinidas, en lugar de definir cada operación individualmente. Esto permite diseñar arquitecturas de red neuronal más rápidamente y de manera más sencilla, con menos código y una mayor facilidad para prototipar y experimentar con diferentes configuraciones.

  • ¿Qué ventajas ofrece el uso de modelos predefinidos en herramientas de machine learning en la nube?

    -El uso de modelos predefinidos en herramientas de machine learning en la nube ofrece la ventaja de simplificar el proceso de implementación y entrenamiento de modelos, ya que se reduce la necesidad de diseñar arquitecturas de red neuronal desde cero. Además, estos modelos suelen estar optimizados para ejecutarse en infraestructuras escalables y que aprovechan la computación en paralelo y la aceleración por GPU.

  • ¿Cómo se puede personalizar y ajustar una red neuronal utilizando herramientas de alto nivel?

    -Con herramientas de alto nivel, como las interfaces de Keras o Scikit-learn, se puede personalizar y ajustar una red neuronal ajustando hiperparámetros como el número de neuronas en cada capa, el tipo de función de activación, el optimizador y la tasa de aprendizaje. Estas herramientas suelen proporcionar una interfaz común para la creación, entrenamiento y predicción, facilitando la experimentación con diferentes configuraciones.

  • ¿Cuál es la relación entre la simplicidad de uso y la flexibilidad en el diseño de las herramientas de aprendizaje automático?

    -A medida que se utilizan herramientas de aprendizaje automático de mayor nivel de abstracción, generalmente se ofrece una simplicidad de uso mayor, pero esto puede ir en detrimento de la flexibilidad en el diseño de las arquitecturas de las redes neuronales. Las herramientas de bajo nivel permiten un mayor control y flexibilidad en la configuración de la red, pero a menudo requieren un conocimiento más profundo y una programación más detallada.

Outlines

00:00

🤖 Introducción a las Redes Neuronales y Herramientas de Aprendizaje Automático

El primer párrafo introduce el tema de las redes neuronales y cómo se han abordado en el canal, destacando la experiencia previa del programador al crear una red neuronal desde cero para resolver un problema de clasificación binaria. Se menciona la existencia de herramientas que facilitan el uso de algoritmos de deep learning, como TensorFlow, y se anuncia el patrocinador del canal, la Academy, una institución especializada en inteligencia artificial con programas de formación intensiva en Barcelona.

05:01

🔍 Construyendo Redes Neuronales con TensorFlow

Este párrafo se enfoca en cómo se pueden construir redes neuronales utilizando la biblioteca TensorFlow. Se explica la creación de una red neuronal a partir de operaciones definidas en un grafo computacional, utilizando placeholders para los datos de entrada y salida. Se detalla el proceso de definición de capas y parámetros, y cómo se implementa la función de activación y el cálculo del error utilizando TensorFlow, facilitando así la diferenciación automática y el entrenamiento de la red neuronal.

10:03

🛠️ Usando Keras para Simplificar la Construcción de Redes Neuronales

El tercer párrafo explora el uso de Keras, una interfaz de alto nivel de TensorFlow, para construir y entrenar redes neuronales de manera más eficiente. Se describe cómo se pueden añadir capas a una red neuronal de forma secuencial y cómo se simplifica el proceso de compilación y entrenamiento del modelo. Se resalta la facilidad de Keras para prototipar rápidamente arquitecturas de deep learning y cómo se puede ajustar la configuración de entrenamiento con una sintaxis compacta.

15:04

🌐 Herramientas de Machine Learning y Modelos Predefinidos

El último párrafo aborda herramientas de alto nivel como Scikit-learn y plataformas de machine learning en la nube, que ofrecen modelos predefinidos para resolver problemas de aprendizaje automático. Se menciona la facilidad de usar estos modelos con una interfaz similar y cómo se pueden ajustar hiperparámetros para adaptarlos a diferentes problemas. El vídeo concluye con una llamada a la suscripción para recibir tutoriales futuros y se promueve la formación en inteligencia artificial a través de la Academy.

Mindmap

Keywords

💡Redes neuronales

Las redes neuronales son una técnica de aprendizaje automático inspirada en la estructura del cerebro humano. Consisten en una red de nodos artificiales que procesan información de manera paralela. En el guion, se menciona que se han hablado mucho sobre redes neuronales, aprendido cómo funcionan y se ha programado una red neuronal desde cero para resolver un problema de clasificación binaria.

💡Diferenciación automática

La diferenciación automática es un concepto clave en el aprendizaje profundo que permite a las máquinas calcular automáticamente las derivadas parciales necesarias para el entrenamiento de modelos, como las redes neuronales. En el video, se destaca cómo las librerías de diferenciación automática, como TensorFlow o PyTorch, facilitan el diseño de arquitecturas neuronales sin la necesidad de calcular manualmente las derivadas.

💡TensorFlow

TensorFlow es una de las herramientas más populares para el aprendizaje profundo desarrollada por Google. Permite construir y entrenar modelos de redes neuronales de manera eficiente. En el guion, se utiliza TensorFlow para implementar una red neuronal y se menciona cómo su uso simplifica el proceso de diferenciación automática y entrenamiento.

💡Función de activación

Las funciones de activación son una parte integral de una red neuronal, determinando cómo se activan los neuronas basándose en la suma ponderada de las entradas. En el video, se menciona la función 'relu' (rectified linear unit) y la función 'sigmoid', que se utiliza en la capa de salida para acotar los valores entre 0 y 1.

💡Backpropagation

La backpropagation, o propagación hacia atrás, es un algoritmo utilizado para entrenar las redes neuronales, permitiendo la retroalimentación del error a través de la red para ajustar los pesos. Aunque no se menciona directamente en el guion, es un concepto fundamental que se entiende implícito en la descripción del proceso de entrenamiento.

💡Deep Learning

El deep learning es una rama del aprendizaje automático que se centra en la creación de redes neuronales profundas, es decir, con múltiples capas de neuronas. Es el tema central del video, donde se discuten diferentes herramientas y técnicas para implementar y entrenar modelos de deep learning.

💡Librerías de alto nivel

Las librerías de alto nivel son herramientas de programación que ofrecen una interfaz simplificada para construir y entrenar modelos de aprendizaje automático. En el guion, se menciona Keras como una interfaz de alto nivel de TensorFlow que simplifica el proceso de diseño y entrenamiento de redes neuronales.

💡Optimización del modelo

La optimización del modelo se refiere al proceso de ajuste de los parámetros de una red neuronal para mejorar su rendimiento. En el video, se discute cómo herramientas como TensorFlow facilitan la optimización mediante la diferenciación automática y el descenso del gradiente.

💡APIs de alto nivel

Las APIs de alto nivel son interfaces de programación que permiten a los desarrolladores interactuar con sistemas complejos de manera sencilla. En el contexto del video, se menciona cómo APIs como Keras o Scikit-learn ofrecen una forma de abstraer la complejidad de las redes neuronales y trabajar con ellas de manera más directa.

💡Hiperparámetros

Los hiperparámetros son valores configurados antes del entrenamiento de un modelo que influyen en su comportamiento y rendimiento. En el guion, se menciona cómo se pueden ajustar hiperparámetros como el número de neuronas, el tipo de optimizador y la tasa de aprendizaje para optimizar el modelo.

Highlights

Se discute la importancia de las herramientas que facilitan la programación de redes neuronales y se mencionan TensorFlow y PyTorch.

Se explica la ventaja de utilizar bibliotecas de diferenciación automática para calcular derivadas parciales.

Se presenta TensorFlow como una herramienta para construir y entrenar redes neuronales de manera más sencilla.

Se describe el concepto de 'grafo computacional' en el contexto de TensorFlow.

Se detalla cómo definir 'placeholders' en TensorFlow para introducir datos en la red neuronal.

Se muestra cómo construir una capa de red neuronal en TensorFlow con una línea de código.

Se abordan las ventajas de la diferenciación automática en el proceso de backpropagación.

Se menciona la posibilidad de modificar la arquitectura de la red neuronal sin tener que reescribir el código completo.

Se introduce Keras como una interfaz de alto nivel de TensorFlow para construir modelos de red neuronal.

Se explica cómo compilar un modelo en Keras antes de entrenarlo.

Se detallan los pasos para entrenar un modelo en Keras utilizando la función 'fit'.

Se discute la simplicidad de usar Scikit-learn para implementar modelos de red neuronal.

Se menciona la evolución de las herramientas de machine learning y cómo se van haciendo más fáciles de usar.

Se habla sobre la importancia de elegir la herramienta correcta en función de la flexibilidad versus simplicidad.

Se anuncia el primer patrocinador del canal, Academy, y se describe su enfoque en la inteligencia artificial.

Se ofrece un descuento exclusivo para los suscriptores del canal en el curso de Academy.

Se invita a los espectadores a suscribirse y activar la notificación para no perderse futuros tutoriales.

Transcripts

play00:00

redes neuronales pero decenales redes

play00:04

neuronales como una red neuronal de

play00:05

neuronales redes neuronales

play00:08

vale vale vale vale si hemos hablado

play00:11

muchísimo sobre redes neuronales hemos

play00:13

aprendido qué es y cómo funcionan

play00:15

intuitivamente e incluso hace unos meses

play00:17

programamos desde cero nuestra propia

play00:19

red neuronal funcional paso a paso en

play00:22

línea línea implementamos lo que era una

play00:23

red neuronal sencilla encargada de

play00:25

resolver un problema de clasificación

play00:27

binaria pues también sencillo ok genial

play00:29

pero significa esto que cada vez que

play00:32

quiera programar una red neuronal

play00:34

tengo que programarla desde cero pues

play00:35

como podrás imaginarte no de hecho la

play00:38

realidad es que es cuentas con numerosas

play00:39

herramientas que tengan la posibilidad

play00:41

de sacarle todo el partido a los

play00:42

algoritmos de deep learning sin costarte

play00:44

muchos quebraderos de cabeza

play00:46

herramientas como que eras tensor flow

play00:48

para aitor y otras tantas deberían de

play00:50

ser herramientas que has escuchado más

play00:51

de una vez pero que a lo mejor no tienes

play00:53

claro que te aporta cada una y que no es

play00:56

por eso que hoy veremos tres maneras

play00:57

diferentes de programar a una red

play00:59

neuronal estás listo perfecto porque

play01:02

empezamos en nada pero antes quiero que

play01:04

sepas que si este vídeo te interesa

play01:06

posiblemente lo que te voy a contar

play01:07

ahora también te va a interesar porque

play01:09

hoy tenemos al primer sponsor del canal

play01:11

academy punto y hay

play01:13

es el primer butt que han dedicado

play01:15

específicamente a la inteligencia

play01:16

artificial en españa' con graduados que

play01:18

han ido a estudiar a harvard trabajan

play01:20

para google o microsoft entre otros lo

play01:22

interesante aquí es que el próximo

play01:23

bootcamp de ella inter el que se va a

play01:25

celebrar empieza el 8 de julio en

play01:27

barcelona con más de 400 horas de

play01:29

formación intensiva dedicada a la

play01:31

inteligencia artificial el machín

play01:32

learning y el díter ning todo esto

play01:34

durante 10 semanas si ha seguido los

play01:36

vídeos de este canal ya tienes el nivel

play01:38

suficiente para poder empezar pues lo

play01:39

único que vas a necesitar es tener una

play01:41

buena base de payton este curso te va a

play01:43

dar todas las herramientas y prácticas

play01:45

para impulsar sus conocimientos al

play01:47

siguiente nivel y poder trabajar como

play01:48

ingeniero o tata sciences además la

play01:51

buena noticia es que se aplican a través

play01:52

del siguiente enlace vas a obtener un

play01:54

descuento del 15 por ciento exclusivo

play01:56

para los miembros de este canal tienes

play01:58

toda la información para consultarlo en

play02:00

la descripción de este vídeo y ahora si

play02:03

vamos a programar unas cuantas redes

play02:05

neuronales por donde empezamos

play02:07

pues como en todo edificio debemos de

play02:09

empezar a construir por los cimientos

play02:11

esto es algo muy común dentro del campo

play02:13

de la informática donde muchas de las

play02:15

herramientas que utilizamos se

play02:16

construyen encima de otras herramientas

play02:17

anteriores vamos aumentando capa por

play02:20

capa abstrayendo funcionalidades

play02:22

complejas en herramientas cada vez más

play02:24

sencillas de utilizar

play02:25

es decir si trabajamos con deep learning

play02:27

pues cada nivel que añadimos sumara una

play02:29

capa de simplicidad en el uso de las

play02:31

redes neuronales pero que al mismo

play02:32

tiempo nos restará flexibilidad en el

play02:34

diseño de las arquitecturas como he

play02:36

dicho antes en este canal nuestro

play02:38

comienzo trabajando con redes neuronales

play02:39

ha sido desde los cimientos

play02:41

implementando desde cero todos los pasos

play02:43

que hacen funcionar a una red neuronal

play02:45

capaz de neuronas que calculan las más

play02:47

ponderada funciones de activación

play02:48

propagación de la información hacia

play02:50

adelante el cálculo del error la

play02:51

propagación del error hacia detrás

play02:53

encadenando derivadas con las chin rule

play02:54

tal y como derivamos en todos los vídeos

play02:56

de teorías y optimizando los parámetros

play02:58

usando el descenso del gradiente todo

play03:00

esto está muy bien explicado paso a paso

play03:02

en el notebook número 4 que te

play03:04

recomiendo hacer si todavía no lo has

play03:05

hecho en el vídeo de hoy este será

play03:08

nuestro punto de partida si recuerdas el

play03:10

problema que trabajamos en aquel vídeo

play03:11

era un problema de clasificación binaria

play03:14

este de aquí donde teníamos a dos

play03:16

círculos concéntricos de puntos que

play03:17

queríamos separar en dos clases

play03:19

diferentes

play03:20

si te fijas todo nuestro código

play03:22

implementado aquí sirve para diseñar una

play03:24

red neuronal con esta arquitectura de

play03:26

acá funciona perfecto pero y si quisiera

play03:29

experimentar con el diseño de la

play03:30

arquitectura y si quisiera colocar una

play03:33

conexión que fuera de esta capa de aquí

play03:34

a esta otra de aquí una conexión pues

play03:38

claro en nuestro código ya la

play03:41

propagación hacia adelante habría que

play03:42

implementarlas nuevo y peor aún el

play03:45

código del back propagación también y

play03:47

claro esto significa que tenemos que

play03:49

volver a papel y boli y recalcular

play03:51

todas las derivadas parciales que

play03:53

implementaban al algoritmo de bach

play03:55

propagación lo cual pues creo que es un

play03:57

motivo suficiente para dejarlo todo irse

play03:59

a jugar con la realidad virtual no debe

play04:02

de haber una forma más sencilla si al

play04:03

menos existen una forma en la que yo

play04:05

pudiera definir qué operaciones quiero

play04:07

que se ejecuten dentro de mi red y que

play04:09

de manera automática el código fuera

play04:11

capaz de calcular todas las derivadas

play04:13

parciales que necesito para hacer el

play04:14

algoritmo de bach propagación pues

play04:16

tendría muchos quebraderos de cabeza

play04:18

resueltos

play04:19

muy interesante contar con una

play04:21

herramienta así verdad pues la buena

play04:22

noticia es que si tomamos el ascensor y

play04:24

subimos a la planta 1 de nuestro

play04:26

edificio entraremos en la zona de las

play04:28

librerías de diferenciación automática

play04:31

en esta planta nos vamos a encontrar con

play04:33

diferentes herramientas donde

play04:34

posiblemente estén short flow y pay

play04:36

torch sean las librerías de pay son más

play04:38

representativas de este nivel como su

play04:40

nombre bien indica las librerías de

play04:41

diferenciación automática se van a

play04:43

encargar de la tarea de calcular

play04:44

automáticamente las derivadas parciales

play04:46

necesarias para optimizar cualquier

play04:48

arquitectura que diseñes internamente

play04:50

para conseguir esta diferenciación

play04:52

automática estas librerías representan

play04:54

todas las operaciones que han de

play04:55

ejecutarse en nuestra arquitectura como

play04:57

un grafo donde cada nodo puede

play04:58

representar una variable entrada o una

play05:01

operación al realizar por ejemplo este

play05:03

grafo de aquí representaría la

play05:04

multiplicación de una variable por tres

play05:06

y la suma de dos a este grafo que hemos

play05:08

construido se le conoce como grafo

play05:10

computacional y es la estructura ideal

play05:12

para iniciar el proceso de

play05:13

diferenciación automática en nuestro

play05:15

caso como ejemplo de librería auto

play05:17

diferenciable nos centraremos en la

play05:18

versión una defensor flow para ver cómo

play05:20

podemos implementar a nuestra red

play05:22

neuronal y así solucionar el mismo

play05:24

problema de clasificación de la última

play05:25

vez

play05:26

puedes parar el vídeo y copiar el

play05:28

siguiente código que te servirá como

play05:29

punto de partida para cargar los datos y

play05:31

visualizar los resultados no tienes

play05:33

copiado ya white o bueno también puedes

play05:35

encontrar el código en un notebook que

play05:37

he preparado abajo en la descripción

play05:38

ojos porque siento que debería haber

play05:40

dicho esto antes bueno da igual fíjate

play05:42

como hemos mencionado antes el punto de

play05:44

partida de todo código un tensor flow

play05:46

pasa por definir explícitamente qué

play05:48

operaciones forman parte de nuestro

play05:50

grafo computacional es decir cómo los

play05:52

datos van a ir fluyendo y

play05:53

transformándose de principio a fin en

play05:55

tensor flow utilizamos los plays holders

play05:57

para definir aquellos puntos de entrada

play05:59

donde nosotros vamos a insertar datos en

play06:01

nuestra red en este caso las variables y

play06:03

x e y son 2 play holder que utilizaremos

play06:07

para introducir nuestros datos de

play06:08

entrada la matriz x y nuestro vector de

play06:11

salida la y para ello los definimos

play06:13

diciendo que el tipo de datos que va a

play06:14

llegar será de tipo float decimal y

play06:16

cuáles van a ser sus dimensiones a

play06:18

partir de este momento ya podemos

play06:19

empezar a añadir las operaciones que

play06:21

definirán a nuestra red neuronal ya

play06:23

sabes que en una red neuronal en cada

play06:25

capa se produce una suma ponderada que

play06:27

es equivalente a una multiplicación

play06:28

matricial después la suma del parámetro

play06:30

de varias y luego lo pasamos por una

play06:32

de activación como podría ser la función

play06:35

reloj por fíjate qué sencillo es hacer

play06:37

esto con tenso el flow y lo primero que

play06:39

tenemos que hacer es definir aquellos

play06:40

parámetros que van a ser optimizados

play06:42

dentro de nuestra red cosa que el tensor

play06:44

flow se define como verbo o variable o

play06:48

bueno con esta línea de código donde

play06:49

vamos a indicar que sus valores van a

play06:51

ser inicializa 2 aleatoriamente y que

play06:53

tendrá estas dimensiones una vez lo

play06:55

tenemos simplemente tenemos que indicar

play06:57

que las operaciones de la capa 1 van a

play06:59

ser la de multiplicar nuestro input y x

play07:01

con la matriz de parámetros w 1 sumar el

play07:04

parámetro de vallas b 1 y pasarlo todo

play07:07

por la función de activación en red

play07:08

fíjate como en unas pocas líneas de

play07:11

código ya hemos creado lo equivalente a

play07:13

una capa de una red neuronal con tensor

play07:15

flow qué pasa que quieres más capas pues

play07:17

simplemente tenemos que copiar y pegar

play07:18

las mismas líneas de código esta de aquí

play07:21

sería la capa 2 y esta de aquí sería la

play07:23

capa 3 en este caso como esta capa 3 va

play07:26

a ser la última capa la capa de salida

play07:28

le pondremos la función de activación

play07:30

sigmoide y no la reino para casi el

play07:32

output queda acotado entre los valores

play07:33

de 0 y 1 perfecto una vez hemos

play07:36

terminado de definir la arquitectura a

play07:38

lo mejor te ves tentados de

play07:40

bueno pues ya estaría ahora hago un

play07:42

print de esto de aquí y obtengo el

play07:44

resultado de las predicciones verdad

play07:45

pues no exactamente cuando hagas sprint

play07:48

verás que te sale este mensaje lo que

play07:50

viene indicar algo así como mira mira yo

play07:53

sé que esto es un tensor con estas

play07:55

dimensiones pero todavía no más pasado

play07:57

datos así que no te puedo decir qué

play08:00

valor es claro recuerda que aquí sólo

play08:03

hemos definido el grafo de operaciones

play08:04

nada más

play08:05

todavía nos faltaría pasarle los datos e

play08:07

iniciar el proceso de entrenamiento la

play08:10

ventaja es que si bien lo que hemos

play08:11

hecho hasta ahora no se diferencia mucho

play08:12

del código original de programarlo desde

play08:15

cero es en el proceso de back pro para

play08:16

gestión y de diferenciación automática

play08:18

donde estas librerías nos mostrarán todo

play08:21

el potencial porque mira una vez tenemos

play08:23

nuestro tensor de salida las

play08:24

predicciones que haremos con él pues si

play08:27

la cuerda lo que tenemos que hacer es

play08:28

nuestra función de coste por

play08:30

ejemplo el error cuadrática medio y

play08:32

comparar nuestras predicciones con el

play08:34

vector de salida original en este caso

play08:36

vendrá introducido por el place holder

play08:38

y con esto evaluaremos los resultados

play08:41

que queremos conseguir pues utilizar

play08:43

este error para optimizar a toda la red

play08:46

es decir que el error se minimice pues

play08:48

dicho y hecho con esta línea de aquí es

play08:50

con la que vamos a definir dentro de

play08:52

nuestro grafo de operaciones que se

play08:53

produzca este proceso de optimización

play08:55

utilizando el descenso del gradiente

play08:57

para minimizar el coste con esto ya

play09:00

tendremos planteadas todas nuestras

play09:02

operaciones y sólo nos faltaría

play09:03

introducir los datos y dejar que tensó

play09:05

el flow inicia el proceso de auto

play09:07

diferenciación y entrenamiento algo que

play09:09

vamos a hacer con las siguientes líneas

play09:11

de código para ejecutar nuestro grafo

play09:12

computacional lo primero que tenemos que

play09:14

hacer es iniciar una sesión una sesión y

play09:17

con ésta empezaremos a ejecutar ahora sí

play09:19

las operaciones de nuestro grafo la

play09:21

primera operación que vamos a ejecutar

play09:22

es esta de aquí que servirá para

play09:24

inicializar todos los parámetros que

play09:27

hemos creado anteriormente todas las

play09:29

matrices de pesos y vaya esto se hará de

play09:32

la manera en la que lo hayamos

play09:33

especificado que en este caso tal y como

play09:35

hemos definido viene a ser de manera

play09:36

aleatoria esto es algo así como si

play09:38

estuviéramos arrancando por primera vez

play09:40

toda la máquina que hemos creado a

play09:42

partir de ahí esta es la línea de código

play09:44

más importante porque es aquí donde

play09:47

vamos a evaluar por fin aquello que

play09:49

queremos ejecutar en este caso le

play09:51

estamos pidiendo

play09:52

flow que nos calculé estos tensores de

play09:54

aquí para lo cual necesitaremos insertar

play09:57

datos a aquellos plays holders que hemos

play09:59

declarado como punto de entrada en

play10:00

nuestro grafo estos datos los podemos

play10:02

inyectar de manera sencilla en esta

play10:03

misma línea de código con el parámetro

play10:05

fit dicta es aquí donde pasaremos

play10:08

nuestra matriz de entrada en nuestro

play10:09

vector de salida con esto estos tensores

play10:12

de aquí se van a calcular y como este

play10:14

tensor es el optimizador que hemos

play10:16

definido arriba cada vez que se evalúe

play10:18

nuestra red estará siendo optimizada de

play10:20

manera automática por tensor flow es

play10:22

decir estará aprendiendo esta línea nos

play10:25

devolverá por tanto el resultado del

play10:27

optimizador que lo descartaremos y el

play10:29

resultado de la función de coste y el

play10:31

vector de predicciones tras una

play10:33

iteración de entrenamiento si dejamos

play10:35

que esto se repita de manera interactiva

play10:36

durante un número determinado de veces

play10:38

el resultado que obtendremos será el

play10:40

siguiente la red ha aprendido a resolver

play10:43

nuestro problema de clasificación como

play10:46

ves el código que hemos escrito bastante

play10:47

sencillo y no debería de costar t

play10:49

entender el resto de líneas que en

play10:51

realidad sólo sirven para obtener

play10:52

métricas durante el entrenamiento tienen

play10:55

todo el código comentado en el notebook

play10:56

que he compartido en la descripción

play10:59

ventaja de trabajar con tensor flow

play11:01

dejando aparte la optimización para gpu

play11:03

la ejecución distribuida la optimización

play11:05

del código es que si tú ahora quisieras

play11:08

modificar algún aspecto de la

play11:09

arquitectura de tu red sólo tendrías que

play11:11

hacer cambios en la primera parte del

play11:13

código y el resto del proceso de auto

play11:15

diferenciación y entrenamiento se

play11:17

computará automáticamente si te das

play11:20

cuenta lo que tensor flow nos permite

play11:21

hacer es construir la arquitectura de

play11:23

redes neuronales que queramos a nivel de

play11:25

operaciones es decir que el diseño de

play11:27

redes neuronales ahora va a ser el de

play11:29

juntar diferentes operaciones como si

play11:31

bloques de lego se tratasen cómodo y

play11:34

para toda la familia qué te parece mola

play11:36

verdad pues me alegro que te guste

play11:38

porque vamos a seguir subiendo en el

play11:40

ascensor de las cosas fáciles y es que

play11:43

si tensor flow es una herramienta cómoda

play11:45

pero si te fijas podría serlo más por

play11:47

ejemplo antes cuando hemos querido

play11:49

diseñar a nuestra red neuronal para

play11:51

definir a cada capa de la red

play11:52

hemos tenido que escribir tres líneas de

play11:54

código declarando los parámetros de la

play11:56

capa y cuáles eran cada una de las

play11:58

operaciones que se producían en ella

play11:59

algo que se vuelve muy redundante cuando

play12:02

seguimos añadiendo más capas a nuestra

play12:04

red

play12:04

no habría una forma más cómoda de hacer

play12:06

esto pues en realidad si todas estas

play12:08

líneas de código las podríamos abstraer

play12:10

hasta el nivel de capa es decir en vez

play12:13

de trabajar combinando distintas

play12:14

operaciones lo que podemos hacer es

play12:16

combinar diferentes tipos de capas para

play12:18

conformar así nuestra red neuronal en

play12:21

realidad en el campo del deep learning

play12:22

la gran mayoría de arquitecturas pueden

play12:24

ser construidas a partir de combinar

play12:26

unos pocos tipos de capas que son

play12:27

comunes a todas estas arquitecturas

play12:28

capas público néctar convolución al es

play12:31

de convolución al es en las el stm

play12:33

etcétera visto así tiene sentido

play12:35

plantearse el diseño de redes neuronales

play12:37

de otra manera desde el punto de vista

play12:39

de las apis de alto nivel donde

play12:41

pasaremos a ver a las redes neuronales

play12:42

como combinaciones de capas un nivel

play12:45

donde de la rama de tensor flow nos

play12:47

encontramos con herramientas como care

play12:49

as que ha pasado a ser la interfaz de

play12:51

alto nivel de facto de la librería

play12:52

tensor flow tras ser integrada como uno

play12:54

de sus módulos de manera muy

play12:56

simplificada lo que consigue es quieras

play12:57

es plantear una interfaz sencilla a

play13:00

nivel de capa de todas las

play13:01

funcionalidades que nos aportan tensor

play13:03

flow visto así vamos a ver cómo podemos

play13:04

resolver el mismo problema de antes pero

play13:06

utilizando quieras ojo porque esta vez

play13:09

va a ser más rápido

play13:10

y es que en que eras comenzamos creando

play13:12

nuestra red neuronal a nuestro modelo

play13:14

llamando a la función secuencial que es

play13:16

una forma de decir la que eras que

play13:17

queremos crear un modelo conformado por

play13:19

una secuencia de capas a partir de este

play13:21

momento ya podemos empezar a añadir

play13:23

capas y capas a nuestra red neuronal en

play13:26

este caso las capas full y connected

play13:27

donde cada neurona tiene una conexión

play13:29

con la capa anterior son denominadas

play13:31

capas de densas a las cuales las tenemos

play13:34

que especificar cuántas neuronas

play13:35

contiene y qué tipo de función de

play13:37

activación va a ejecutar una vez tenemos

play13:39

definida la capa que queremos añadir la

play13:41

podemos incluir en nuestro modelo

play13:42

simplemente llamando a la función model

play13:45

punto at con esto ya que era sabrá qué

play13:47

operaciones debe de incluir en nuestro

play13:49

grafo computacional para implementar a

play13:51

esta capa muy muy sencillo si ahora

play13:54

quisiéramos continuar añadiendo capas

play13:56

pues tendríamos que repetir la línea de

play13:58

código anterior añadimos una segunda

play14:00

capa y ahora una tercera capa la de

play14:02

salida una vez estamos satisfecho con el

play14:04

diseño de nuestra red en que heras el

play14:06

entrenamiento se vuelve mucho más

play14:07

sencillo lo primero que tenemos que

play14:09

hacer es compilar el modelo para así

play14:11

comunicar al back-end de tensor flow que

play14:13

estamos listos para entrenar esto lo

play14:15

hacemos con la función con baile

play14:17

objeto del modelo y será aquí donde

play14:18

especificamos qué función de costos

play14:20

utilizaremos para optimizar y qué

play14:22

optimizador utilizaremos de manera

play14:24

complementaria también podemos añadir

play14:25

otras métricas que serán calculadas y

play14:27

visualizadas durante el entrenamiento

play14:29

una vez tenemos el modelo compilado

play14:31

ahora sólo queda entrenarlo y en este

play14:33

caso esto se consigue llamando a la

play14:35

función punto fit será aquí donde le

play14:37

diremos a que heras cuáles son nuestros

play14:39

datos de entrada x y nuestros datos de

play14:42

salida y de igual forma podremos

play14:44

controlar otros parámetros del proceso

play14:46

de entrenamiento como el tamaño del bach

play14:47

o el número de épocas a entrenar cuando

play14:50

estemos listos lo ejecutamos y veremos

play14:52

inmediatamente cómo empezará el proceso

play14:54

de entrenamiento

play14:55

acaso nos bello comparativamente el

play14:58

código programado con care us es

play14:59

muchísimo más compacto y orientado al

play15:02

prototipado rápido de arquitecturas de

play15:03

deep learning como veis tal y como

play15:05

dijimos en un principio entre más alto

play15:07

subimos en los niveles de abstracción de

play15:09

estas herramientas mayor es su

play15:10

simplicidad de uso en detrimento eso sí

play15:12

de la flexibilidad en el diseño para

play15:15

ilustrar esto podemos subir un último

play15:17

nivel en nuestro ascensor donde

play15:18

pasaremos a tratar a las redes

play15:20

neuronales desde un punto de vista de

play15:22

capas a uno

play15:23

de vista de modelo en este nivel las

play15:26

cosas se vuelven bastante sencillas la

play15:28

verdad ya que miramos a las redes

play15:30

neuronales como un todo como un modelo

play15:32

cuya arquitectura ya nos dan

play15:34

predefinidas y que podemos controlar de

play15:36

manera limitada ajustando unos pocos

play15:39

hiper paramentos como ejemplo de este

play15:40

nivel podemos encontrarnos con librerías

play15:42

como ese calero a piece en plataformas

play15:45

de machine learning en la nube o

play15:46

paquetes avanzados en herramientas de

play15:48

ofimática estas herramientas suelen

play15:50

ofrecerte un catálogo de modelos desde

play15:52

los más tradicionales como knn camins

play15:54

modelos logísticos o lineales hasta

play15:57

cosas más avanzadas como modelos de

play15:59

redes neuronales en este nivel es

play16:00

importante saber qué herramientas ofrece

play16:02

soporte para gpu si lo que se quiere es

play16:04

buscar una solución que escale bien con

play16:06

el volumen de datos para nuestro

play16:08

problema bastante sencillo s cullen será

play16:10

suficiente para poder implementar a

play16:12

nuestra red con una mínima cantidad de

play16:13

código

play16:14

aquí podemos usar los modelos dentro del

play16:16

módulo neural network y elegir al multi

play16:18

layer per ser transgresor como el modelo

play16:20

a utilizar en este caso utilizó al

play16:22

regreso en vez del clasificador para

play16:24

seguir obteniendo la probabilidad de

play16:25

pertenencia a una de las clases lo bueno

play16:27

de seca lerma es que todos los modelos

play16:28

siguen una interfaz similar

play16:30

donde primero se crea el objeto del

play16:31

modelo luego se entrena llamando a la

play16:33

función punto fit y finalmente se

play16:35

realizarán predicciones con la función

play16:37

credit bastante sencillo la dificultad

play16:40

de aquí reside en la de encontrar

play16:41

aquellos híper parámetros que mejor se

play16:43

ajusten a tu problema podemos definir

play16:45

estos híper parámetros cuando creamos el

play16:47

objeto del modelo por ejemplo aquí pues

play16:49

podemos seleccionar el tipo de

play16:50

optimizador e learning rate inicial el

play16:52

número de neuronas para cada capa oculta

play16:54

o la política detrás del número de

play16:56

interacciones a entrenar cuando esté

play16:58

listo veremos que estas dos líneas de

play17:00

código son suficientes para solucionar a

play17:02

nuestro problema la ventaja de ese caler

play17:04

como ya he dicho es la sencillez para

play17:06

probar otros tipos de modelos diferentes

play17:08

puesto que sólo requeriría cambiar esta

play17:10

línea de código por el modelo que

play17:11

queramos al mantenerse igual la interfaz

play17:13

del resto de funciones con este último

play17:15

ejemplo espero que haya quedado clara mi

play17:16

intención con este vídeo que es la de

play17:18

mostrar el gradiente de herramientas con

play17:20

las que contamos en el campo del match

play17:21

in learning si nos movemos en el eje de

play17:23

simplicidad versus flexibilidad hay que

play17:25

comentar que este gradiente de

play17:27

herramientas cada vez se vuelve más

play17:28

difuso con la evolución de cada una de

play17:30

estas librerías al combinarse por

play17:32

ejemplo tensor flow con care as o cuando

play17:34

herramientas como python se añaden

play17:36

más funciones de alto nivel igualmente a

play17:38

nivel horizontal las diferencias entre

play17:40

herramientas tan importantes como tensor

play17:41

flow o pai torch se van igualando cuando

play17:44

bueno tensor flow se inspira en su nueva

play17:46

versión en algunas de las bondades que

play17:48

ofrece pay torch pero bueno esto ya lo

play17:51

dejaremos para otro vídeo en nuestro

play17:52

caso quiero que este vídeo sirva como

play17:54

punto de partida para los próximos ya

play17:56

notebooks que llegarán al canal donde

play17:58

nos moveremos entre la planta 1 y 2 de

play18:00

nuestro edificio trabajando con tensor

play18:02

flow y quieras si quieres estar alerta

play18:04

de estos tutoriales te recomiendo

play18:05

suscribirte y darle a la campana si aún

play18:07

no lo has hecho y si de verdad te

play18:08

interesa el mundo del ma jin learning y

play18:10

quieres profesionalizarte en este sector

play18:11

no dejes de consultar la información de

play18:13

los cursos de academy punto y jay y

play18:15

beneficiarte así del descuento dado a

play18:17

los suscriptores de este canal tenéis

play18:19

toda la información en la descripción

play18:21

por mi parte nada más adiós

play18:25

[Música]

Rate This

5.0 / 5 (0 votes)

Related Tags
Machine LearningTensorFlowKerasDiferenciación AutomáticaRedes NeuronalesAprendizaje ProfundoCódigo SencilloOptimización GPUInteligencia ArtificialModelos Predefinidos
Do you need a summary in English?