Redes Neurais em IA e Deep Learning - página 16

 

Curso de aprendizaje automático para principiantes (partes 5-10)


Curso de aprendizaje automático para principiantes

Parte 5

  • 04:00:00 En esta sección del video, el instructor explica la terminología básica de los árboles de decisión, como los nodos terminales o de hoja y las ramas. También analizan la división de los datos y la poda de nodos, que es la eliminación de ciertos nodos en el árbol. El instructor enfatiza la importancia de tomar notas y comprender la terminología para una mejor comprensión de los árboles de decisión. Luego pasan a explicar cómo se ven los límites de decisión, o hiperplanos, en los árboles de decisión y cómo se construyen para cada resultado. El instructor traza los hiperplanos en función de las dos características elegidas para el ejemplo y muestra cómo se construyen según el resultado.

  • 04:05:00 En esta sección, el instructor explica cómo se construyen los árboles de decisión utilizando medidas de selección de atributos como la entropía, la ganancia de información y la impureza gini. Estas medidas ayudan a determinar qué característica debe ser el nodo raíz o cómo dividir el conjunto de datos. El instructor enfatiza la importancia de elegir la característica correcta para evitar terminar con un mal modelo. La entropía se define como una medida de aleatoriedad en la que cuanto mayor es la entropía, más difícil es extraer información de ella. El instructor proporciona ejemplos y propiedades de la entropía para ayudar a comprender su importancia en la construcción de árboles de decisión.

  • 04:10:00 En esta sección del video, el instructor explica cómo calcular la entropía, que es una medida de aleatoriedad, usando una fórmula que involucra la probabilidad de cada clase y el logaritmo de la probabilidad. El instructor utiliza el ejemplo de un conjunto de datos para jugar al golf y calcula la entropía de las clases "sí" y "no" para demostrar cómo funciona la fórmula. El instructor también analiza diferentes propiedades de la entropía, incluidos los clasificadores binarios con dos clases, y la importancia de minimizar la entropía para mejorar la precisión de un modelo de aprendizaje automático.

  • 04:15:00 En esta sección, el instructor explica el concepto de entropía, que es una medida de la aleatoriedad de un atributo que determina si es necesario dividirlo para un árbol de decisión. La entropía se calcula en función de la cantidad de valores únicos en los datos y el objetivo es minimizar la entropía para obtener mejores resultados del árbol de decisión. El instructor proporciona ejemplos de diferentes escenarios y muestra cómo calcular la entropía de cada uno para comprender cuándo un atributo se convierte en un nodo hoja o necesita una división adicional. La entropía máxima es 1 y la entropía mínima es 0, y los diferentes algoritmos de árboles de decisión siguen reglas específicas con respecto a cuándo considerar un atributo como una hoja o dividirlo más según el valor de la entropía.

  • 04:20:00 En esta sección, el presentador explica el concepto de entropía como medida de aleatoriedad y el diagrama de entropía. El valor de entropía más alto es uno y se puede calcular usando una determinada ecuación. Pasando a la obtención de información, el presentador la presenta como otra medida de selección de atributos y proporciona un ejemplo de un conjunto de datos utilizado para explicarla. El conjunto de datos se divide en subconjuntos más pequeños en función del número de etiquetas y la entropía se calcula para cada subconjunto. Esta es una explicación preliminar de la ganancia de información, que se explorará más a fondo en la siguiente sección.

  • La sección 04:25:00 explica cómo calcular la ganancia de información en árboles de decisión utilizando la entropía. El proceso implica tomar la entropía de toda la distribución de datos y luego tomar la entropía antes y después de dividir los datos. La fórmula para obtener información consiste en restar la entropía antes de la división de la entropía ponderada después de la división. El ejemplo utilizado en este video demuestra cómo se calculan la entropía y la entropía ponderada para cada división y luego se promedian para obtener la entropía ponderada de todo el conjunto de datos. Finalmente, la entropía antes de la división se resta de la entropía después de la división para determinar la ganancia de información.

  • 04:30:00 la impureza de Gini es muy similar al cálculo de entropía, pero en lugar de usar logaritmos, usa probabilidades al cuadrado. Después de dividir el conjunto de datos en varias categorías, calcula la impureza de Gini ponderada y luego la resta de la impureza de Gini anterior para obtener la ganancia de información. Este es un método popular y de uso común en el aprendizaje automático. Es importante comprender la impureza de Gini, así como la entropía y la ganancia de información al construir un modelo de árbol de decisiones.

  • 04:35:00 En esta sección, el instructor explica el concepto de impureza de Gini como otra medida de impureza en un árbol de decisión. La impureza de Gini es un signo dado para una impureza dada de y es igual a 1 menos i es igual a 1 hasta la k. El instructor explica el escenario de la impureza de Gini con un ejemplo de tener un valor de categoría único de sí o no, donde 0,5 es la probabilidad del número de sí y el número de no es 0,5. La impureza de ganancia de 0,5 es máxima en la impureza de Gini, que se usa principalmente como una alternativa a la entropía, ya que es más rápida, ya que evita el uso de la función logarítmica en la entropía. Finalmente, el instructor muestra el diagrama de entropía y la impureza de Gini y promete demostrar cómo usar un clasificador de árboles de decisión para realizar una tarea de regresión en la siguiente sección.

  • 04:40:00 En esta sección del video, el instructor explica cómo calcular la entropía antes de dividir los datos para determinar la ganancia de información. Toman la entropía de la distribución de datos y calculan la ganancia de información con respecto a la variable de perspectiva. Luego dividen los datos en función de esta variable y continúan calculando la entropía ponderada y la ganancia de información para las variables de temperatura, humedad y viento. En última instancia, se encuentra que la ganancia de información en Outlook es la más alta, por lo que se elige como nodo raíz para el árbol de decisión.

  • 04:45:00 árbol de decisiones y cómo se puede utilizar para problemas de clasificación y regresión. En clasificación, los árboles de decisión se construyen a partir del cálculo de las medidas de impureza, como la entropía y el coeficiente de Gini, para tomar decisiones en cada nodo. El objetivo es hacer que el árbol sea lo más puro posible o hasta que llegue a un punto en el que se vuelva puro. En la regresión, los árboles de decisión se construyen tomando el promedio del valor objetivo en cada punto de división hasta que llega a un nodo hoja. El sobreajuste puede ser un problema en los árboles de decisión, por lo que es importante detener el crecimiento del árbol a cierta profundidad o podar algunas ramas para hacerlo más robusto.

  • 04:50:00 En esta sección, el instructor explica que es importante comprender las medidas de selección de atributos cuando se trabaja con árboles de decisión. Proporcionan ejemplos y explican la implementación de la regresión del árbol de decisiones y el clasificador residencial. El instructor enfatiza la importancia de aprender de la implementación y explica los hiperparámetros, como la profundidad máxima del árbol, la división mínima de la muestra, la hoja mínima de la muestra y el control de estado aleatorio. También muestran un ejemplo del uso de la herramienta de gráficos para trazar un árbol de decisión.

  • 04:55:00 En esta sección, el video analiza la regresión del árbol de decisión y sus criterios para medir la función, incluido el error cuadrático medio, el error absoluto medio y el envenenamiento. El video enfatiza la importancia de los hiperparámetros, particularmente el paso máximo, para controlar el sobreajuste. También se muestran ejemplos de árboles de decisión y sus métodos, como la trama, y el video enfatiza la importancia de comprender los árboles de decisión como un concepto crucial en el aprendizaje automático. La siguiente sección analiza el aprendizaje conjunto y sus tres técnicas: bagging, boosting y stacking, que se usan comúnmente en las competencias de Kaggle.

parte 6

  • 05:00:00 En esta sección, el instructor analiza el concepto de modelos de alta varianza y alto sesgo, en los que puede ocurrir un sobreajuste y un ajuste insuficiente. El objetivo en el aprendizaje automático es tener un modelo de baja desviación y baja desviación para lograr una precisión óptima. El instructor da ejemplos de aprendizaje en conjunto, donde se entrenan múltiples modelos con datos y se toman predicciones de cada modelo para votar y, en última instancia, determinar la respuesta o predicción correcta. La mayoría suele ser más precisa que la respuesta de un individuo en el aprendizaje conjunto, y el instructor explica el concepto usando ejemplos como preguntas de cuestionarios y votaciones electorales.

  • 05:05:00 En esta sección, el instructor brinda una descripción general del aprendizaje conjunto y cómo se puede usar para problemas de clasificación y regresión. En la clasificación, se tiene en cuenta la mayoría de los votos, mientras que en la regresión, la media o la mediana de los resultados de los modelos base se utilizan para la predicción final. Las técnicas utilizadas en el aprendizaje en conjunto incluyen embolsado, impulso, apilamiento y cascada, y la mayoría de los ganadores de la competencia Kaggle utilizan alguna forma de técnicas de aprendizaje en conjunto. Además, el instructor señala que empresas como Amazon y Google utilizan estos algoritmos, como XGBoost y Random Forest, en sus propios productos.

  • La sección 05:10:00 analiza los conceptos básicos de embolsado, una técnica de aprendizaje de conjunto también conocida como agregación de arranque. El embolsado implica el muestreo aleatorio de subconjuntos de datos de entrenamiento y modelos de entrenamiento en cada subconjunto. La idea es reducir el sobreajuste y mejorar la precisión del modelo mediante el uso de un conjunto de múltiples modelos. La sección explica cómo funciona el empaquetamiento, incluido cómo muestrear los datos, entrenar subconjuntos de modelos y combinar las predicciones para una mayor precisión.

  • 05:15:00 En esta sección, el ponente explica el concepto de embolsado, una técnica para mejorar la precisión de los modelos de aprendizaje automático. El embolsado implica muestrear datos con reemplazo y luego entrenar modelos en cada muestra. Luego, los modelos individuales se combinan para formar un modelo agregado que produce predicciones más precisas. El orador señala que el embolsado es una técnica conceptualmente simple que no involucra matemáticas avanzadas.

  • 05:20:00 En esta sección, el disertante analiza el embolsado, que ayuda a reducir la varianza de los modelos base de alta varianza y bajo sesgo. El embolsado combina estos modelos para crear un modelo más grande, de baja varianza y bajo sesgo. El muestreo de filas se usa mientras se muestrean los datos, lo que implica muestrear solo las filas de la gran distribución de datos. Es importante tener en cuenta que en el embolsado, solo se utiliza el muestreo de filas, a diferencia del bosque aleatorio, que utiliza tanto el muestreo de filas como el de columnas. El embolsado también se conoce como agregación de arranque, lo que implica el arranque y la agregación de modelos base.

  • 05:25:00 En esta sección, el instructor resume la técnica de embolsado, que es una forma de reducir la varianza en modelos de alta varianza y bajo sesgo. El embolsado implica tomar subconjuntos de datos para el entrenamiento y combinar la mayoría de los votos para la clasificación. El instructor cree que un algoritmo poderoso para esto es el bosque aleatorio, que es una combinación de árboles de decisión, embolsado y muestreo de columnas. Los árboles de decisión toman decisiones simples y dividen nodos, mientras que el embolsado implica tomar subconjuntos de datos para el entrenamiento. También se utiliza el muestreo de columnas o el empaquetado de características, tomando subconjuntos de las columnas. El instructor afirma que los bosques aleatorios son poderosos y que las principales empresas como Google, Quora y Amazon los utilizan.

  • 05:30:00 En esta sección, el instructor de aprendizaje automático explica el concepto de embolsado y bosque aleatorio. El embolsado implica muestrear filas con reemplazo y entrenar un árbol de decisiones en el subconjunto, mientras que el bosque aleatorio agrega muestras de columnas a la mezcla. Esto significa que se muestrean tanto las filas como las columnas, lo que crea una mayor probabilidad de un modelo de buen rendimiento debido a la técnica de aprendizaje por conjuntos. El instructor también menciona el concepto de puntos fuera de la bolsa (oob), que son los puntos que quedan fuera después del muestreo y se pueden utilizar para la validación cruzada. Finalmente, el instructor resume las principales diferencias entre bagging y random forest.

  • 05:35:00 En esta sección, el video analiza las técnicas de embolsado y bosques aleatorios en el aprendizaje automático. El embolsado implica el muestreo de filas, lo que conduce a un modelo más grande, lo que reduce la varianza. Random forest es lo mismo, pero con muestreo de columnas y árboles de decisión como modelos base. La complejidad del tren en los árboles de decisión es del orden de n log m por n por d, mientras que en los bosques aleatorios es de d por k por n. El video también analiza cómo los bosques aleatorios se paralelizan de manera trivial, lo que los hace fáciles de entrenar. Finalmente, se introduce el concepto de árboles extremadamente aleatorios, que ensayan posibles valores para determinar el umbral en los árboles de decisión.

  • 05:40:00 En esta sección, el orador analiza el concepto de árboles extremadamente aleatorios como una alternativa al costoso método computacional de probar todos los valores posibles en Random Forest. Al muestrear un subconjunto de columnas y filas, la varianza se reduce pero hay menos posibilidades de obtener buenos resultados en comparación con Random Forest. El orador también menciona las desventajas de usar Random Forest en grandes conjuntos de datos debido a su complejidad temporal, pero sugiere probarlo y ajustar los hiperparámetros mediante la búsqueda en cuadrícula. Luego presentan la API scikit-learn para implementar Random Forest y mencionan un proyecto para ajustar hiperparámetros.

  • 05:45:00 En esta sección, se analiza el clasificador de bosque aleatorio con sus parámetros y atributos. El primer parámetro es n_estimators, que es el número de árboles de decisión que se utilizan. Los criterios de selección de atributos y la profundidad máxima del árbol también se explican junto con otros parámetros, como la muestra mínima requerida para dividir y el número máximo de características. También se menciona el uso de la importancia de las características para seleccionar características importantes para el modelo. El regresor de bosque aleatorio también se analiza brevemente con sus similitudes con el clasificador.

  • 05:50:00 En esta sección del video, el instructor analiza las técnicas de conjunto, en particular, Boost. El impulso es otra técnica popular de aprendizaje en conjunto, y el instructor brinda una descripción general del aumento de gradiente, el impulso adaptativo o AdaBoost y el impulso extremo o XGBoost. El instructor también menciona que hay un conjunto de problemas disponible en GitHub para que los espectadores los prueben y anima a los espectadores a suscribirse al canal de YouTube para apoyar la creación de más contenido gratuito.

  • 05:55:00 En esta sección, el video cubre los temas de embolsado e impulso en el aprendizaje automático. El embolsado se utiliza para reducir la varianza alta en los modelos mediante el muestreo de columnas y filas, seguido de la agregación. El impulso, por otro lado, se usa para reducir el sesgo en los modelos al combinar de forma aditiva a los alumnos débiles en un modelo fuerte. La idea central de usar el impulso es reducir el sesgo en un modelo altamente sesgado. El video proporciona una intuición básica de boosting usando un ejemplo de datos de entrenamiento.

parte 7

  • 06:00:00 En esta sección, el orador explica la idea central detrás del impulso y cómo funciona para minimizar el error. El impulso es una técnica de aprendizaje supervisado que consiste en entrenar un modelo con datos de entrenamiento (x e y) con una etiqueta para cada ejemplo. Luego, el modelo se usa para predecir la salida de cada entrada, y la diferencia entre el valor real predicho y el real se mide para calcular la pérdida. El modelo está entrenado para reducir el error residual, enfocándose en los datos que están mal clasificados o tienen un MSE o MAE alto. El impulso implica ajustar múltiples modelos en los errores residuales, minimizando el error al ajustarlo para cada ejemplo de entrenamiento. El modelo final es la suma de todos estos modelos, ponderados por alfa.

  • 06:05:00 En esta sección, se explica el concepto de impulso, que es una técnica para reducir el sesgo en los modelos de aprendizaje automático. El refuerzo convierte a los alumnos débiles en alumnos fuertes al ajustar los errores residuales de los modelos anteriores, lo que da como resultado un modelo de baja desviación y baja varianza que funciona bien en el conjunto de entrenamiento. Sin embargo, existe el riesgo de sobreajuste si el modelo es demasiado bueno en el conjunto de entrenamiento. Se analizan varias técnicas de impulso, como el impulso de gradiente, el impulso adaptativo y el impulso extremo. Además, se menciona brevemente la idea detrás del embolsado, que es otra técnica para mejorar el rendimiento del modelo.

  • 06:10:00 En esta sección, el instructor explica el concepto de impulso de gradiente, que es un algoritmo de impulso que convierte a los alumnos débiles en alumnos fuertes. El aumento de gradiente es un poderoso algoritmo utilizado por las grandes empresas tecnológicas y de producción. Es una función de costo diferenciable que permite tomar derivadas para mejorar el error bajo un conjunto de entrenamiento. El instructor brinda ejemplos del mundo real de aumento de gradiente y analiza las funciones de costos diferenciables y su importancia en el algoritmo. La discusión incluye el uso de datos de entrenamiento y una función de costo en descenso de gradiente, lo que la convierte en una herramienta útil en el aprendizaje automático.

  • 06:15:00 En esta sección, el ponente explica el algoritmo para entrenar un modelo usando boosting. El algoritmo implica inicializar el modelo con un valor constante, calcular los residuos o pseudo-residuales, tomar la derivada parcial de la función de costo con respecto al modelo, ajustar a los alumnos base a los residuos de modelos anteriores y luego iterar a través de cada modelo para calcule los pseudo-residuales y ajuste los aprendices base. El objetivo es encontrar el valor lambda que minimice la función de costo y mejore la precisión del modelo.

  • 06:20:00 En esta sección, el orador explica el proceso del algoritmo de aumento de gradiente, que comienza inicializando el modelo con alguna constante y luego aplicando un bucle for para sacar los residuos de cada ejemplo de entrenamiento. Luego, el modelo ajusta un alumno base a los residuos y calcula el multiplicador lambda m para cada modelo. Para actualizar el modelo, se ajusta el modelo anterior a los residuos anteriores, y el modelo final se obtiene sumando el modelo anterior y el nuevo modelo obtenido después de resolver el problema de optimización unidimensional. El orador también cubre los conceptos de regularización y contracción y por qué son necesarios en el impulso debido al alto sesgo.

  • 06:25:00 En esta sección, el video analiza cómo se puede usar el impulso para reducir el alto sesgo en los modelos de aprendizaje automático. El impulso implica ajustar los residuos del modelo anterior durante cada iteración, lo que puede resultar en un sobreajuste y un aumento en la varianza. Para evitar este problema, se puede agregar la regularización y la reducción usando un parámetro de aprendizaje llamado v. Empíricamente, se ha encontrado que un valor de v igual a 0.1 da como resultado mejoras dramáticas. El video también cubre la complejidad temporal de los árboles de decisión de aumento de gradiente y la implementación del aumento de gradiente a través de la API scikit-learn.

  • 06:30:00 En esta sección, el orador analiza la implementación del clasificador de aumento de gradiente utilizando la API Scikit-learn. Explican los diferentes parámetros involucrados, como la pérdida, la tasa de aprendizaje, la cantidad de estimadores y más. La tasa de aprendizaje se utiliza para reducir la sobrevariación y evitar el sobreajuste. La implementación de Gradient Boosting Classifier es solo una línea de código, y la probabilidad de predicción da la probabilidad de que los datos sean verdaderos para una determinada clase. El orador también analiza brevemente la implementación de Gradient Boosting Regressor y enfatiza la importancia de aprender de la documentación.

  • 06:35:00 En esta sección del video "Curso de aprendizaje automático para principiantes", el instructor analiza el clasificador AdaBoost y su implementación mediante la API de Cython, así como el algoritmo Extreme Gradient Boosting (XGBoost). El instructor explica que XGBoost es una versión avanzada de Gradient Boosting que agrega aleatorización a través del muestreo de filas y columnas, lo que la convierte en una herramienta poderosa para los problemas de aprendizaje automático. La sección también cubre los diferentes parámetros utilizados en XGBoost y su importancia en el ajuste fino del modelo.

  • 06:40:00 En esta sección, el orador habla sobre los diferentes paquetes para algoritmos de aprendizaje automático, como Gradient Boosting Tree, GB Linear y DART. Discuten los diferentes parámetros que se pueden ajustar, incluida la matriz de evaluación y la regularización, y cómo afectan el modelo. El orador también menciona XGBoost y muestra cómo se usa en Python. Enfatizan la importancia de ajustar el modelo y cómo puede conducir a una mayor precisión. Por último, el orador presenta el concepto de apilamiento y cómo puede ayudar a mejorar la precisión de los modelos.

  • 06:45:00 En esta sección, el instructor presenta el concepto de apilamiento y cómo se diferencia del embolsado y el impulso. El apilamiento implica tomar diferentes aprendices de base que están altamente ajustados y tienen un buen equilibrio entre el sesgo y la varianza, y entrenarlos en diferentes subconjuntos de datos para crear diferentes modelos. Esto es diferente del empaquetamiento, que se usa para reducir la varianza alta mediante el uso de alumnos base con varianza alta y sesgo bajo, y el refuerzo, donde los modelos base no están necesariamente muy ajustados. El instructor brinda un ejemplo de apilamiento con diferentes modelos base, como regresión logística, máquinas de vectores de soporte y k vecinos más cercanos, que se han sometido a un ajuste fino extenso para producir buenos modelos con una buena compensación de sesgo-varianza.

  • 06:50:00 En esta sección, el orador explica la intuición básica detrás del apilamiento, que es un tipo de aprendizaje conjunto. El apilamiento implica dividir los datos de entrenamiento en subconjuntos y entrenar diferentes clasificadores en cada subconjunto. Estos estudiantes básicos son buenos para equilibrar el sesgo y la varianza. A diferencia de bagging, que tiene una variación alta y un sesgo bajo, y boosting, que tiene un sesgo alto y una variación baja. Después de obtener las predicciones de cada modelo, se entrena un metaclasificador en las etiquetas de clase predichas o sus probabilidades. La idea es combinar las predicciones de estos modelos de conjuntos para crear un clasificador más preciso y robusto.

  • 06:55:00 En esta sección, el instructor analiza el apilamiento, un método para combinar múltiples modelos para crear un nuevo modelo con un mejor rendimiento. El proceso implica entrenar múltiples modelos base y usar sus predicciones como características para entrenar un clasificador de segundo nivel, que genera las predicciones finales. El instructor muestra un ejemplo de la creación de un modelo de clasificación apilado mediante regresión logística, k-vecinos más cercanos, bayesiano ingenuo gaussiano y modelos de bosque aleatorio en Python mediante la biblioteca sklearn. También demuestran cómo usar el clasificador de apilamiento de la biblioteca mlx10.

parte 8

  • 07:00:00 En esta sección, el orador explica cómo implementar un clasificador de apilamiento utilizando diferentes modelos, como vecinos K, bosque aleatorio y regresión logística. Recorren la creación de instancias del objeto y la realización de una validación cruzada triple para seleccionar el mejor modelo con la mayor precisión. El orador también demuestra cómo trazar los límites de decisión y utilizar la búsqueda en cuadrícula para ajustar el equilibrio entre el sesgo y la varianza. Al seleccionar los mejores parámetros y características, el clasificador de apilamiento puede proporcionar una predicción más precisa que los modelos individuales.

  • 07:05:00 En esta sección, el instructor resume los temas tratados en las secciones anteriores sobre el aprendizaje en conjunto, incluido el embolsado, los bosques aleatorios, la potenciación, los árboles de decisión de potenciación de gradientes, AdaBoost y XGBoost. El instructor también brinda una descripción general del apilamiento y brinda ejemplos del algoritmo en acción. La sección concluye con un recordatorio para suscribirse al canal de YouTube del instructor e información sobre un curso de aprendizaje automático, CS01, que cubre temas más allá del aprendizaje conjunto, incluidas las redes neuronales, las GAN y las redes neuronales convolucionales. Finalmente, el instructor se burla de las próximas secciones sobre aprendizaje no supervisado y proyectos futuros.

  • 07:10:00 En esta sección, el ponente introduce el concepto de aprendizaje no supervisado, que implica tener acceso únicamente a puntos de datos sin etiquetas o un supervisor para guiar el proceso de aprendizaje. A diferencia del aprendizaje supervisado, donde se conoce el resultado, el aprendizaje no supervisado implica hacer grupos de puntos de datos para comprenderlos mejor. Como ejemplo motivador, el ponente sugiere segmentar a los clientes en una empresa como Amazon en función de las similitudes, aunque no hay etiquetas que indiquen qué cliente pertenece a qué segmento. El objetivo del aprendizaje no supervisado es descubrir patrones y estructuras en el conjunto de datos.

  • 07:15:00 En esta sección, el instructor analiza el aprendizaje no supervisado y sus aplicaciones. Explica que los científicos de datos pueden usar el aprendizaje no supervisado para dividir a los clientes en segmentos y proporcionar recomendaciones de productos en función de su actividad en el sitio web. Utiliza Amazon como ejemplo de una empresa que utiliza el aprendizaje no supervisado para motores de recomendación y segmentación de clientes. El instructor también explica que el aprendizaje no supervisado se puede utilizar para agrupar en espacios de alta dimensión, con elementos similares cerca unos de otros y elementos diferentes lejos. Da ejemplos de análisis de secuencias en biología y agrupación de grupos similares en negocios como aplicaciones de aprendizaje no supervisado. En general, el instructor brinda una breve descripción general del aprendizaje no supervisado y sus aplicaciones potenciales en varias industrias.

  • 07:20:00 En esta sección, el orador analiza diferentes aplicaciones del aprendizaje automático, como la agrupación de clústeres similares en datos comerciales para marketing dirigido y el uso de motores de recomendación para sugerir productos en función de la actividad del usuario. El orador también menciona la segmentación de imágenes para la detección de objetos, el análisis de sentimientos para determinar si un texto es positivo o negativo y la detección de anomalías para encontrar valores atípicos en un modelo. Estas diversas aplicaciones demuestran la versatilidad del aprendizaje automático en diferentes campos.

  • 07:25:00 En esta sección, el orador presenta el tema de la agrupación y los diferentes tipos de algoritmos de agrupación, como el basado en el centro y el basado en la densidad. El enfoque estará en el algoritmo de agrupamiento k-means, que se explorará en profundidad. El orador también alienta a los espectadores a trabajar en conjuntos de problemas y proyectos para obtener una mejor comprensión del aprendizaje automático. El ponente destaca la importancia del aprendizaje no supervisado y muestra cómo se puede aplicar el agrupamiento en varios campos. La agrupación en un plano X e Y se utiliza para ilustrar el concepto de agrupación. En general, la sección destaca los próximos temas que se cubrirán en el curso y alienta a los espectadores a seguir aprendiendo.

  • 07:30:00 En esta sección, el ponente explica el aprendizaje no supervisado y la agrupación, que implica la segmentación de datos en diferentes grupos. Se discute la terminología de distancia intra-cluster e inter-cluster, donde intra-cluster se refiere a la distancia entre puntos de datos dentro de un cluster, mientras que inter-cluster se refiere a la distancia entre clusters. El objetivo es tener una distancia intra-cluster pequeña y una distancia inter-cluster grande, lo que significa que los datos dentro de los clusters deben ser similares y los datos entre clusters deben ser diferentes. Esto se conoce como el objetivo de optimización.

  • 07:35:00 En esta sección, aprendemos sobre técnicas de evaluación para agrupar o modelos de aprendizaje no supervisados. La primera técnica introducida es el índice de Dunn, que representa la mayor distancia entre grupos dividida por la distancia mínima dentro de los grupos. El objetivo es tener un índice de Dunn alto, lo que significa que la distancia entre los clústeres debe ser grande, mientras que la distancia dentro de los clústeres debe ser pequeña. Esta técnica nos permite evaluar la calidad de nuestro modelo de agrupamiento.

  • 07:40:00 En esta sección, el instructor analiza técnicas de evaluación para modelos de agrupamiento. La atención se centra en el índice de Dunn, que es una matriz de evaluación utilizada para determinar si el intra-cluster es grande y el inter-cluster es pequeño. El instructor proporciona la definición básica del índice de Dunn, que implica evaluar las distancias máximas entre diferentes puntos de datos dentro y entre grupos. Otra técnica de evaluación discutida es el índice de Davies-Bouldin, que es similar al índice de Dunn, pero con más restricciones. El instructor también proporciona una definición de una línea de agrupación, que es agrupar objetos o elementos de una manera específica.

  • 07:45:00 En esta sección, el orador explica la definición básica de agrupamiento, que es el proceso de organizar datos en grupos en función de similitudes y diferencias. Hay dos casos de agrupación: intra-cluster e inter-cluster, que miden la distancia dentro de un cluster y la diferencia entre todos los clusters, respectivamente. Luego, el orador analiza diferentes tipos de agrupamiento, incluido el agrupamiento basado en particiones, que divide los datos en dos grupos, y el agrupamiento jerárquico, que utiliza dendrogramas para visualizar el proceso de agrupamiento. El orador entra en más detalles sobre el agrupamiento aglomerativo y el agrupamiento divisivo dentro del agrupamiento jerárquico, brindando un ejemplo de un dendrograma para ilustrar el proceso.

  • 07:50:00 En esta sección, el instructor cubre diferentes tipos de agrupación, incluidas las agrupaciones basadas en particiones, jerárquicas, bien separadas, basadas en el centro y basadas en la densidad. El instructor explica que la agrupación se trata de agrupar objetos similares de manera que los objetos dentro de un grupo sean similares entre sí y los objetos entre grupos sean diferentes. El instructor también explica cómo evaluar el rendimiento de los modelos de agrupamiento utilizando diferentes índices, incluido el índice de Dunn y el índice de Davis-Bouldin. La siguiente sección se centrará en el agrupamiento de k-medias, uno de los algoritmos basados en el centro.

  • 07:55:00 En esta sección, el instructor resume las subsecciones anteriores que cubrieron aplicaciones de aprendizaje no supervisado, tipos de agrupamiento y la intuición y definición formal de agrupamiento. Luego, el enfoque cambia al algoritmo de agrupamiento k-means, también conocido como algoritmo de Lloyd, y sus diversas funciones, como inicialización, centroides, hiperparámetros, métricas de evaluación y limitaciones. El instructor proporciona una visualización del algoritmo con dos centroides inicializados aleatoriamente e ilustra el paso de asignación seguido del paso de promedio en la primera iteración.

parte 9

  • 08:00:00 En esta sección, el instructor explica en detalle el algoritmo de agrupamiento k-means. El algoritmo implica inicializar k centroides, asignación de grupos, actualizar los grupos sacando el promedio y actualizar el centroide asignando el punto de datos más cercano. Este proceso se repite hasta que los centroides no cambien, lo que indica que el algoritmo ha convergido. El instructor también menciona que el agrupamiento de k-medias también se denomina algoritmo de Lloyd e implica la inicialización aleatoria de centroides.

  • 08:05:00 En esta sección, el orador explica los pasos para el algoritmo de agrupamiento k-means. Primero seleccionan el número de conglomerados (k) y luego asignan cada punto al conglomerado más cercano. Vuelven a calcular el centroide tomando el promedio y moviéndolo, luego repiten el proceso hasta que los centroides dejan de cambiar. El objetivo de optimización es minimizar la función de costo, que se puede calcular utilizando la distancia euclidiana entre los puntos de datos y los centroides de los grupos. La función de costo también se conoce como SSE (error de suma cuadrática) y el objetivo es minimizar la variabilidad dentro del clúster. El orador señala que también se pueden usar otras métricas de distancia además de la euclidiana.

  • 08:10:00 En esta sección, el instructor explica por qué la inicialización aleatoria de los centroides en el agrupamiento de K-means puede causar problemas y presenta el algoritmo K-means++ como solución. K-means++ implica seleccionar varios centroides y elegir el que minimiza la suma de los errores al cuadrado (SSE). El instructor también presenta el método del codo, que se usa para determinar la cantidad óptima de centroides en función de una gráfica de SSE versus la cantidad de conglomerados. Se recomienda utilizar K-means++ y el método del codo en lugar de la inicialización aleatoria para obtener mejores resultados de agrupación en aprendizaje automático.

  • 08:15:00 En esta sección, el instructor explica la técnica de evaluación de k-means, que implica minimizar el intra-cluster calculando la distancia entre los puntos dentro del cluster usando el error de la suma cuadrática. La inicialización de los centroides tiene un impacto en el algoritmo, y la técnica k-means ++ es un método recomendado para seleccionar centroides en función de varias ejecuciones con SSE bajo. El número de grupos se puede determinar utilizando el método del codo, donde el valor óptimo de k es el punto donde gira el codo. El instructor también menciona algunas limitaciones del agrupamiento de k-medias, como la sensibilidad a los valores atípicos, que se pueden resolver utilizando técnicas basadas en densidad como DBSCAN o agrupamiento jerárquico. La complejidad temporal de la agrupación en clústeres de k-medias depende del tamaño de entrada, el número de clústeres y las dimensiones. El instructor recomienda el curso de dominio de DSA para comprender mejor el concepto de complejidad del tiempo.

  • 08:20:00 clúster con p1 y p2, y luego agregamos p4 a este clúster. A continuación, fusionamos este grupo en uno y finalmente agregamos p3 al grupo para terminar con un grupo. Este es un ejemplo de agrupación jerárquica, que es una técnica en la que los puntos de datos se agrupan en función de sus similitudes, formando una jerarquía de grupos. La subsección también cubrirá el agrupamiento aglomerativo y divisivo, así como un cálculo manual del algoritmo.

  • 08:25:00 En esta sección, el orador explica la agrupación jerárquica y el proceso de convertir un grupo de números en una jerarquía de grupos. El ejemplo dado muestra cómo los grupos se unen entre sí en función de la similitud hasta que solo queda un grupo. Luego, el orador explica los dos tipos de agrupamiento jerárquico: agrupamiento aglomerativo y divisivo, y da una intuición detrás de ambos métodos. El agrupamiento aglomerativo es un enfoque de abajo hacia arriba en el que se unen más clústeres similares, mientras que el agrupamiento divisivo es un enfoque de arriba hacia abajo en el que los clústeres se dividen en clústeres más pequeños en función de la similitud.

  • 08:30:00 En esta sección, el orador explica la intuición básica detrás de la agrupación jerárquica que implica la creación de una jerarquía de números o agrupaciones. El agrupamiento se puede realizar en un enfoque de arriba hacia abajo o de abajo hacia arriba, según el tipo de agrupamiento, aglomerante o divisivo. El agrupamiento aglomerativo implica fusionar diferentes grupos en uno, mientras que el agrupamiento divisivo implica dividir un grupo en grupos individuales. Luego, el orador continúa explicando el algoritmo para la agrupación aglomerativa que implica calcular una matriz de proximidad y repetir el proceso de fusionar grupos y actualizar la matriz hasta que se cubran todos los grupos. Finalmente, el ponente proporciona un ejemplo de matriz aproximada de cuatro puntos para ilustrar el concepto.

  • 08:35:00 En esta sección, el orador explica cómo crear una matriz de proximidad y un dendrograma utilizando un ejemplo de puntos de datos. La matriz de proximidad ayuda a medir la similitud entre dos puntos o conglomerados, mientras que el dendrograma muestra la jerarquía de los conglomerados. El orador destaca los tres métodos utilizados para medir la similitud entre los grupos, a saber, mínimo, máximo y promedio de grupo.

  • 08:40:00 En esta sección, el instructor analiza dos métodos para fusionar clústeres en clústeres jerárquicos: mínimo y máximo. El enfoque mínimo implica tomar la similitud entre dos grupos como la distancia mínima entre dos puntos cualesquiera en los grupos. Los grupos con la distancia más pequeña se fusionan primero y el proceso continúa hasta que todos los puntos están en un solo grupo. El enfoque máximo es similar, pero toma la similitud entre dos grupos como la distancia máxima entre dos puntos cualesquiera en los grupos. El instructor proporciona un ejemplo utilizando una matriz de proximidad para ilustrar estos conceptos.

  • 08:45:00 En esta sección, el instructor explica el concepto de medida de similitud entre grupos promedio de grupo, que es otro tipo de medida de similitud entre grupos. Proporciona una ecuación para ello y muestra un dendrograma para explicar cómo funciona. Luego, el instructor analiza las desventajas de la medida de distancia mínima, afirma que es sensible a los valores atípicos y sugiere que los alumnos pueden consultar las páginas de Wikipedia para comprender mejor. También proporciona complejidad de tiempo y espacio para el agrupamiento aglomerativo, que es orden de n cuadrado para espacio y orden de n cuadrado log of n u orden de n cubo para complejidad de tiempo. Finalmente, concluye la sección instando a los alumnos a practicar con muchos proyectos para consolidar su comprensión del aprendizaje automático.

  • 08:50:00 En esta sección, el ponente analiza la sección del proyecto del curso y presenta el modelo de predicción de insuficiencia cardíaca que se construirá. El orador explica que el modelo predecirá si una persona morirá en función de varias características, como la edad, el sexo, la presión arterial, la diabetes y el tabaquismo. Los datos de este proyecto están disponibles en un enlace provisto, y el orador explica que el objetivo comercial de este proyecto es construir un sistema de inteligencia artificial para el cuidado de la salud que ayudará con la detección temprana de problemas de salud para salvar vidas. Adicionalmente, el disertante menciona que en el curso también se presentará un proyecto de sistema de detección de spam. El orador importa las bibliotecas necesarias, carga los datos e imprime la forma de los datos.

  • 08:55:00 En esta sección, aprendemos los conceptos básicos de la exploración de datos, como verificar la forma de los datos y su información. Usando el método info(), podemos ver si hay valores nulos, el tipo de datos y el uso de la memoria. También podemos usar el método describe() para obtener información sobre la distribución estadística de los datos numéricos. El análisis exploratorio de datos (EDA) es un paso esencial en el aprendizaje automático, donde hacemos preguntas a los datos y encontramos respuestas para ayudar a proporcionar soluciones comerciales. Para este problema de clasificación binaria, examinaremos la distribución de clases, donde '1' significa que la persona murió y '0' significa que la persona está viva.

parte 10

  • 09:00:00 En esta sección del video, el instructor analiza el problema de los datos desequilibrados en el aprendizaje automático. El fragmento de código muestra la distribución de datos donde hay 203 casos de vida y 96 casos de muerte, lo cual está desequilibrado. Los datos desequilibrados significan que los datos no se distribuyen por igual entre las clases, y esto puede causar que el modelo esté sesgado hacia ciertas clases. El instructor explica que los datos desequilibrados son un gran problema en el aprendizaje automático, donde el modelo puede ser más propenso a ser entrenado en la clase mayoritaria y predecir esa clase con mayor frecuencia.

  • 09:05:00 En esta sección, el orador explica el concepto de datos equilibrados y cómo los modelos funcionan mejor con ellos, ya que son más robustos e imparciales. Luego continúan mostrando varias formas en que se pueden analizar los datos, como la distribución por edades y el filtrado de datos según ciertas condiciones. El hablante muestra un código Python para seleccionar filas donde la edad es superior a 50 y ver si la persona murió o no. Usan gráficos circulares para visualizar los datos y responder preguntas comerciales, como que el número total de casos de muerte es dos veces menor que los casos vivos y que la mayoría de la edad aumenta de 40 a 95.

  • 09:10:00 En esta sección, el instructor repasa un fragmento de código en Python donde calculan el número total de casos dietéticos y no dietéticos. Encuentran que de un total de 203 casos, la mayoría de los casos son casos de dieta, pero más de 50 de ellos tienen más de 50 años y han muerto. Luego, el instructor continúa explicando cómo pueden responder más preguntas en función de estos datos y representar visualmente los datos para que sea más fácil de entender. Finalmente, el instructor revisa la correlación entre las variables y proporciona una gráfica para explicar qué significa correlación.

  • 09:15:00 En esta sección, el instructor explica la correlación y cómo varía de menos uno a más uno. Una variable más cercana a menos uno significa que es muy similar, mientras que un valor más cercano a cero significa que no hay transmisión lineal. La correlación de Pearson es una forma de determinar si los datos son lineales o no, y cuanto más cercana a uno es la correlación, más positivamente se correlacionan los datos. El instructor habla sobre la correlación perfecta y cómo las diagonales son todas una, lo que significa que los cuadrados se correlacionan con cada variable en sí. Después de discutir los datos y la comprensión, el instructor pasa al desarrollo del conjunto de datos y cómo dividir los datos en conjuntos de entrenamiento y prueba para validar que el modelo funciona mejor. El instructor brinda un ejemplo de ingeniería de funciones, que consiste en agregar más funciones con variables categóricas y aplicar transformaciones en los datos para insertar funciones. Un término de interacción es sumar el producto de dos características, y el instructor muestra cómo iterar a través de todas las columnas y multiplicar las dos columnas juntas.

  • 09:20:00 En esta sección, el presentador analiza el proceso de creación de un modelo y evalúa su exactitud, precisión, recuperación y matriz de confusión. El presentador usa un algoritmo llamado algoritmo de optimización para reducir un conjunto de datos con 10,000 puntos de datos y diez características. Explican cómo funciona el descenso de gradiente estocástico y cómo se puede utilizar para minimizar el tiempo de cálculo. Además, explican términos clave como "verdadero positivo" y "clase positiva", que son importantes para comprender el rendimiento general del modelo.

  • 09:25:00 En esta sección, el orador explica los conceptos de verdadero positivo, falso positivo, verdadero negativo y falso negativo, y cómo se utilizan para crear una matriz de confusión, que muestra el número de instancias clasificadas correctamente para positivo y Clases negativas en un modelo. El orador también analiza la precisión y el recuerdo, que responden a diferentes preguntas sobre la precisión de las predicciones positivas y sus ocurrencias reales. El orador demuestra el uso de la regresión logística y los clasificadores de vectores de soporte con un ajuste fino extenso, así como los clasificadores de árboles de decisión, utilizando la búsqueda aleatoria para la optimización de parámetros. También se presentan los puntajes de entrenamiento y prueba para cada clasificador.

  • 09:30:00 En esta sección del video, el instructor explica cómo construir un sistema de detección de spam y ham utilizando un conjunto de datos descargado del repositorio de UCI. Los datos están en formato de tabla, y el instructor los lee y los separa en función de una pestaña, con los encabezados establecidos en ninguno y las columnas etiquetadas como 'etiqueta' y 'mensajes'. El objetivo es clasificar los mensajes como spam o no spam (ham), y el instructor recorre el proceso de ajuste fino de diferentes modelos (como un clasificador de bosque aleatorio y un clasificador XGBoost) para lograrlo. El instructor también destaca la importancia de la selección de funciones y muestra cómo guardar el modelo XGBoost para uso futuro. En general, este es un proyecto interesante que demuestra cómo se puede usar el aprendizaje automático para resolver problemas del mundo real.

  • 09:35:00 En esta sección del video, el presentador pasa por el proceso de exploración y análisis de un conjunto de datos de mensajes de texto que se descargaron de un repositorio de UCI. El objetivo es construir un modelo de aprendizaje automático que pueda diferenciar entre mensajes spam y no spam. El presentador explica que los datos de texto deben convertirse en números para que funcione el modelo y demuestran cómo usar un vectorizador de texto para esto. Luego exploran la distribución de las clases y notan que el conjunto de datos está desequilibrado con más mensajes que no son spam que mensajes spam. Finalmente, explican la importancia de limpiar los datos del texto, ya que pequeñas diferencias en la ortografía o el uso de mayúsculas pueden dar lugar a clasificaciones incorrectas.

  • 09:40:00 En esta sección, el instructor explica el proceso de preprocesamiento de texto, que implica convertir todo el texto a minúsculas, reemplazar ciertos caracteres como 0 y 3 con equivalentes de texto significativos y eliminar caracteres innecesarios. El instructor también sugiere explorar la derivación y la lematización para lograr una reducción significativa de palabras en el texto. Se da un ejemplo usando lambda para aplicar preprocesamiento de texto a cada mensaje, que luego se almacena en una nueva columna llamada "texto procesado".

  • 09:45:00 En esta sección, el orador habla sobre el preprocesamiento del texto y la aplicación de lematización con el lematizador de Porter para reducir la inflexión en palabras. El orador también menciona la ingeniería de funciones, donde la mano se codifica a cero y se expande a uno llamando al método del mapa. Luego, el conjunto de entrenamiento se convierte en incrustaciones de palabras, que convierten las palabras en números usando técnicas como el vectorizador de conteo, el vectorizador tf-idf y la bolsa de palabras. El texto se convierte en una matriz dispersa con elementos almacenados, que luego se utiliza en el algoritmo Naive Bayes para la clasificación. Finalmente, el orador da un ejemplo de cómo probar un texto nuevo llamando al vectorizador de conteo y al modelo para determinar si es spam o no.

  • 09:50:00 En esta sección del video, el orador demuestra cómo construir un sistema básico de detección de spam y ham utilizando técnicas de procesamiento de lenguaje natural (NLP), como la transformación de vector de conteo y la predicción Naive Bayes. El sistema toma los mensajes como entrada, los preprocesa y predice si son spam o no. El ponente destaca que esto es solo una muestra de cómo trabajar con datos en PNL, y que existen varias otras técnicas que se pueden utilizar. El orador concluye el curso y felicita a los espectadores por completarlo.
 

Aprendizaje automático para todos: curso completo



Aprendizaje automático para todos: curso completo

00:00:00 - 01:00:00 Esta parte del video analiza los conceptos básicos del aprendizaje automático, incluido el aprendizaje supervisado y no supervisado. También cubre los diferentes modelos disponibles y cómo usarlos. Finalmente, explica cómo medir el rendimiento de un modelo de aprendizaje automático.

01:00:00 - 02:00:00 Esta parte explica cómo usar el aprendizaje automático para predecir los resultados de los eventos. Analiza la regresión lineal, la regresión logística y las máquinas de vectores de soporte. También explica cómo usar una búsqueda de cuadrícula para entrenar un modelo de aprendizaje automático.

02:00:00 - 03:00:00 Esta parte cubre los conceptos básicos del aprendizaje automático, incluida la regresión lineal y la retropropagación. Explica cómo normalizar datos y ajustar un modelo de regresión lineal usando la biblioteca TensorFlow.

03:00:00 - 03:50:00 Este video presenta los conceptos de aprendizaje automático, incluido el aprendizaje supervisado y no supervisado. Demuestra cómo usar una regresión lineal y una red neuronal para hacer predicciones. El presentador también explica cómo usar el aprendizaje automático para agrupar datos.


Parte 1

  • 00:00:00 En este video, Kylie Ying explica los modelos de aprendizaje supervisado y no supervisado, cómo funcionan y cómo programarlos en Google Colab.

  • 00:05:00 Este resumen de 1 párrafo explica el aprendizaje supervisado, que es un tipo de aprendizaje automático donde la computadora recibe un conjunto de entradas y se le pide que prediga la etiqueta de una entrada determinada.

  • 00:10:00 El aprendizaje supervisado es el proceso de asignar una etiqueta a los datos de entrada para entrenar un modelo de aprendizaje automático. Luego, el modelo generará una predicción para la entrada dada. El aprendizaje no supervisado es el proceso de usar datos no etiquetados para aprender sobre patrones en los datos. En el aprendizaje por refuerzo, se entrena a un agente en un entorno interactivo basado en recompensas y penalizaciones.

  • 00:15:00 Este video analiza el aprendizaje automático, sus diversas aplicaciones y los diversos tipos de datos que puede manejar. También cubre el aprendizaje supervisado y no supervisado y la regresión.

  • 00:20:00 En este video, el instructor explica cómo funciona el aprendizaje automático y cómo usarlo para predecir resultados en un conjunto de datos. El instructor también analiza cómo ajustar la precisión de un modelo de aprendizaje automático después del entrenamiento.

  • 00:25:00 Este video analiza el concepto de pérdida y cómo afecta el rendimiento de un modelo de aprendizaje automático. La pérdida es una medida de qué tan lejos está una predicción de un modelo de aprendizaje automático de la etiqueta real dada en un conjunto de datos determinado. Hay varias funciones de pérdida disponibles, cada una con sus propias ventajas y desventajas. Finalmente, el video analiza cómo calcular y verificar el rendimiento de un modelo de aprendizaje automático.

  • 00:30:00 El video analiza cómo usar el aprendizaje automático para predecir etiquetas de clase a partir de un conjunto de datos. El conjunto de datos incluye 10 características, cada una de las cuales corresponde a una clase. Los histogramas se utilizan para comparar visualmente las distribuciones de las características entre clases. El video concluye con una discusión sobre cómo se pueden mejorar los datos.

  • 00:35:00 En este video, el instructor explica cómo usar técnicas de aprendizaje automático para crear un conjunto de entrenamiento, validación y prueba. El instructor demuestra cómo escalar un conjunto de datos para que los valores sean más comparables y luego crea una función para transformar los valores de x. Finalmente, el instructor crea una matriz numpy 2d y llama a la función hstack para apilar las matrices una al lado de la otra.

  • 00:40:00 En este video, el instructor analiza los diferentes modelos de aprendizaje automático disponibles y cómo usarlos en el código. Entre los modelos discutidos están los k-vecinos más cercanos, la regresión lineal y una red neuronal.

  • 00:45:00 En este video, el instructor Alan Siegel repasa los conceptos básicos del aprendizaje automático, incluido el uso de una función de distancia y el uso de algoritmos de vecinos más cercanos. Él explica que, en la clasificación binaria, el algoritmo vecino más cercano usará un valor "k" para determinar qué punto es la etiqueta "más" o "menos". Muestra cómo se puede aplicar esto a un conjunto de datos de propiedad de automóviles y maternidad, demostrando cómo el algoritmo del vecino más cercano puede determinar qué punto es la etiqueta "más" o "menos" para un punto de datos dado.

  • 00:50:00 Este video explica cómo usar el aprendizaje automático para predecir la ubicación de un punto. El video explica cómo usar un algoritmo de k-vecinos más cercanos para encontrar el punto más cercano. El video también explica cómo usar un informe de clasificación para determinar la clasificación del punto.

  • 00:55:00 En este video, se explica un modelo de aprendizaje automático. El modelo tiene una precisión del 82 por ciento, una precisión del 77 por ciento y una recuperación del 89 por ciento. El modelo se describe como naive bayes, que es un modelo simple de aprendizaje automático.


Parte 2

  • 01:00:00 La regla de Bayes es una fórmula matemática utilizada para calcular la probabilidad de eventos dado que ya han ocurrido otros eventos. En este ejemplo, la regla de Bayes se usa para calcular la probabilidad de una enfermedad dada una prueba positiva.

  • 01:05:00 Este video cubre los conceptos básicos del aprendizaje automático, con un enfoque en la inferencia bayesiana. El presentador demuestra cómo aplicar la inferencia bayesiana a los problemas de clasificación y analiza las diversas distribuciones de probabilidad involucradas.

  • 01:10:00 En este video, se explica una regla para naive bayes, y se muestra que la probabilidad de un evento en particular, dado un conjunto de datos, es proporcional a la suma de las probabilidades de los eventos individuales.

  • 01:15:00 Este video explica cómo se puede usar el aprendizaje automático para predecir los resultados de los eventos, como si lloverá o no mientras se juega un partido de fútbol, o qué día es. Luego, el video pasa a discutir la regresión logística, que es una técnica de aprendizaje automático más avanzada. El video muestra cómo se puede usar la línea de regresión para predecir la probabilidad de diferentes resultados. El video concluye con una demostración de cómo se puede usar la regresión logística para predecir si un estudiante aprobará o no una prueba en particular.

  • 01:20:00 En este video, el instructor explica cómo usar la regresión lineal para estimar la probabilidad de que un clasificador sea correcto. Para hacer esto, primero necesitan reescribir la ecuación como p es igual a mx más b. Esta ecuación puede tomar un rango de infinito negativo a infinito, pero debe permanecer entre cero y uno. Para resolver p, eliminan el logaritmo de las probabilidades, lo que les da p sobre uno menos la probabilidad.

  • 01:25:00 En este video, el presentador analiza tres tipos de modelos de aprendizaje automático: regresión lineal, regresión logística y máquinas de vectores de soporte. El presentador demuestra cómo usar cada modelo y proporciona ejemplos de cómo se podría usar cada uno.

  • 01:30:00 En este video, el instructor explica cómo funciona el aprendizaje automático y los diferentes tipos de algoritmos disponibles. También analiza cómo maximizar los márgenes de una máquina de vectores de soporte (SVM) utilizando puntos de datos que se encuentran en las líneas de margen.

  • 01:35:00 En este video, el autor analiza diferentes modelos de aprendizaje automático, incluidas las máquinas de vectores de soporte (SVM), las redes neuronales y la regresión logística. Muestra que las SVM son las más precisas de las tres y que las redes neuronales pueden ser incluso más precisas que las SVM.

  • 01:40:00 En aprendizaje automático, una neurona es una unidad básica de representación en una red neuronal. Las características de entrada de una neurona se multiplican por un peso, y la suma de todas estas entradas multiplicadas se introduce en la neurona. La función de activación de la neurona altera el estado lineal de sus entradas en función del error asociado con sus predicciones. El algoritmo de descenso de gradiente se utiliza para seguir la pendiente de la función cuadrática hacia un error menor.

  • 01:45:00 En este video, el instructor explica cómo funciona el aprendizaje automático y cómo programar una red neuronal usando TensorFlow. Continúa mostrando cómo crear una red neuronal secuencial y cómo calcular la pérdida con respecto a un peso.

  • 01:50:00 En este video, el presentador demuestra cómo usar algoritmos de aprendizaje automático con TensorFlow. Primero, importan TensorFlow y crean un modelo de red neuronal. A continuación, establecen la activación de las capas y configuran las métricas de pérdida y precisión. Finalmente, entrenan el modelo usando un entrenamiento de 100 épocas y una división de validación de 32 épocas.

  • 01:55:00 En este video, el autor explica cómo entrenar un modelo de aprendizaje automático mediante una búsqueda en cuadrícula. También analiza la importancia de los hiperparámetros y cómo configurarlos.


parte 3

  • 02:00:00 Este video tutorial muestra cómo usar el aprendizaje automático para la predicción y clasificación. El video cubre los conceptos básicos para entrenar un modelo de aprendizaje automático, registrar el historial del modelo y trazar el rendimiento del modelo.

  • 02:05:00 Este video muestra cómo crear un modelo de pérdida mínima para una red neuronal utilizando una técnica llamada conversión. El modelo funciona de manera similar a un modelo que usa una SVM, y el video también demuestra cómo crear un informe de clasificación usando la salida de la red.

  • 02:10:00 En este video, el autor explica la regresión lineal y cómo calcular el residual. El residual es la distancia entre la predicción y el punto de datos real, y se usa para determinar la línea de mejor ajuste para la línea de regresión.

  • 02:15:00 El video analiza los conceptos de linealidad e independencia, y muestra cómo se pueden violar esos supuestos en conjuntos de datos no lineales. Luego pasa a discutir los supuestos de normalidad y homocedasticidad, y cómo se pueden evaluar mediante gráficos de residuos.

  • 02:20:00 La medida del error absoluto medio nos dice en promedio qué tan lejos están nuestras predicciones de los valores reales en nuestro conjunto de entrenamiento.

  • 02:25:00 El error cuadrático medio (MSE) es una medida del rendimiento de una predicción y está estrechamente relacionado con el error absoluto medio. El RMSE se calcula tomando la suma de todos los cuadrados de los residuos y se utiliza para medir el rendimiento de una predicción en relación con su valor esperado.

  • 02:30:00 Este curso en video de 1 hora cubre los conceptos básicos del aprendizaje automático, incluida la regresión lineal. El curso cubre el tema de los residuos y cómo usarlos para determinar la mejor línea de ajuste para un conjunto de datos.

  • 02:35:00 Este video presenta el concepto de aprendizaje automático y cómo usar varias bibliotecas y conjuntos de datos. Luego pasa a explicar cómo utilizar un marco de datos para representar los datos y cómo analizar los datos.

  • 02:40:00 El video analiza cómo usar el aprendizaje automático para predecir el conteo de bicicletas en diferentes momentos del día. Muestra cómo crear un conjunto de entrenamiento, validación y prueba, y cómo usar la función numpy.split para dividir el marco de datos en diferentes grupos.

  • 02:45:00 El video analiza cómo se puede usar el aprendizaje automático para resolver problemas. El instructor brinda un ejemplo del uso del aprendizaje automático para predecir la temperatura y brinda información sobre cómo calcular los coeficientes de regresión y calificar el modelo.

  • 02:50:00 En este video, el creador demuestra cómo usar el aprendizaje automático para mejorar el rendimiento de un modelo de regresión lineal en un nuevo conjunto de datos.

  • 02:55:00 En este video, el presentador explica cómo construir un modelo de regresión lineal en Python usando la biblioteca TensorFlow. Explican que es útil normalizar los datos antes de entrenar el modelo y luego ajustar el modelo usando retropropagación. Muestran cómo trazar la pérdida del modelo a lo largo del tiempo y cómo el modelo ha convergido en un buen ajuste.


parte 4

  • 03:00:00 Este video explica los conceptos de aprendizaje automático de una manera accesible para todos. El instructor demuestra cómo usar una red neuronal para predecir valores de un conjunto de datos y demuestra el efecto de cambiar varios parámetros.

  • 03:05:00 Este video cubre los conceptos básicos del aprendizaje automático, incluida la historia de la regresión lineal y cómo usar una red neuronal. Luego, el presentador demuestra cómo calcular el error cuadrático medio para una regresión lineal y una red neuronal, y compara los resultados.

  • 03:10:00 En este video, el instructor explica cómo funciona el aprendizaje supervisado y no supervisado. Analiza cómo se pueden usar una regresión lineal y una red neuronal para hacer predicciones.

  • 03:15:00 En este video, el presentador explica cómo usar el aprendizaje automático para dividir los datos en tres grupos. Luego usan esta información para calcular nuevos centroides y crear nuevos grupos.

  • 03:20:00 Este video analiza dos tipos de aprendizaje automático: el aprendizaje no supervisado, que busca patrones en los datos, y el aprendizaje supervisado, que utiliza un conjunto de entrenamiento para aprender a predecir resultados futuros. Las técnicas de aprendizaje no supervisado incluyen la maximización de expectativas y el análisis de componentes principales, que reducen la dimensionalidad al encontrar los componentes principales de los datos. Las técnicas de aprendizaje supervisado incluyen la regresión lineal y la inferencia bayesiana.

  • 03:25:00 El aprendizaje automático es un campo de análisis de datos que ayuda a hacer predicciones sobre datos desconocidos. En este curso, el instructor explica cómo utilizar el análisis de componentes principales (PCA) para reducir la dimensionalidad de un conjunto de datos. Esto permite una visualización y discriminación más fácil de los puntos de datos.

  • 03:30:00 En este video, el presentador presenta el concepto de regresión lineal y su aplicación a datos bidimensionales (2D). A continuación, introducen el concepto de análisis de componentes principales (PCA), que es una técnica utilizada para reducir un conjunto de datos a sus dimensiones más relevantes. Finalmente, discuten el uso del aprendizaje no supervisado en el aprendizaje automático.

  • 03:35:00 Este video analiza cómo usar el aprendizaje automático para la clasificación mediante el aprendizaje no supervisado. El presentador muestra cómo usar pandas para importar datos y luego compara los datos entre sí para ver los resultados. Concluyen discutiendo cómo se ven algunos de los datos y sugieren que el agrupamiento podría mejorarse usando un clasificador diferente.

  • 03:40:00 El video enseña cómo usar algoritmos de aprendizaje automático para agrupar datos.

  • 03:45:00 En este video, un experto en aprendizaje automático explica cómo aplicar varias técnicas de aprendizaje automático para resolver problemas específicos. El video también cubre el análisis de conglomerados y PCA.

  • 03:50:00 Este video explica el aprendizaje automático y sus diversas etapas, incluido el aprendizaje no supervisado. También cubre cómo agrupar usando k-means. El video concluye con una discusión sobre el aprendizaje supervisado y sus diversas etapas, incluidas la clasificación y la regresión.
 

Curso completo de TensorFlow 2.0: tutorial sobre redes neuronales de Python para principiantes (partes 1 a 4)



Curso completo de TensorFlow 2.0 - Tutorial de redes neuronales de Python para principiantes

00:00:00 - 01:00:00 Este video brinda una introducción a TensorFlow 2.0, una biblioteca para la manipulación de datos y el aprendizaje automático. El instructor explica qué es un tensor y cómo usar los tensores para almacenar cálculos parcialmente definidos. También demuestra cómo usar las funciones TF dot rank y TF dot remodele para controlar el número de dimensiones en un tensor.

01:00:00 - 02:00:00 El video tutorial explica cómo usar la regresión lineal para predecir valores en un conjunto de datos. El conjunto de datos del Titanic se utiliza como ejemplo. El presentador explica cómo se usa la regresión lineal para predecir valores en un conjunto de datos y cómo crear columnas de características en un conjunto de datos usando TensorFlow.

02:00:00 - 03:00:00 Este video tutorial cubre los conceptos básicos del uso de Python para redes neuronales. El video comienza con una descripción de cómo una red neuronal se compone de capas de neuronas interconectadas. Luego, el video cubre cómo crear un generador de números aleatorios y cómo entrenar una red neuronal. Finalmente, el video muestra cómo conectar neuronas y pesos, cómo pasar información a través de la red y cómo calcular el valor de salida de una neurona.

03:00:00 - 04:00:00 Este video explica cómo usar TensorFlow para construir una red neuronal convolucional para el reconocimiento de imágenes. El video cubre los conceptos básicos de las redes neuronales convolucionales, incluido cómo funcionan y cómo usar modelos previamente entrenados.

04:00:00 - 05:00:00 Este video explica cómo usar TensorFlow para entrenar un modelo de aprendizaje automático que puede predecir la clase de una imagen. El video cubre conceptos básicos como el aprendizaje profundo y las redes neuronales convolucionales.

05:00:00 - 06:00:00 Este video es una guía completa para usar TensorFlow 2.0 para entrenar redes neuronales. Cubre las formas de entrada y salida de la red neuronal, cómo crear una función de pérdida y cómo usar el modelo para predecir una secuencia. El video también muestra cómo generar texto con TensorFlow.

06:00:00 - 06:50:00 Este tutorial en video presenta los conceptos básicos de TensorFlow 2.0, una poderosa biblioteca de aprendizaje automático. Después de presentar TensorFlow y sus conceptos clave, el tutorial guía a los espectadores a través de una serie de tutoriales sobre diferentes tareas de aprendizaje automático, como el aprendizaje profundo y el aprendizaje reforzado.


Parte 1

  • 00:00:00 Este video tutorial les enseña a los principiantes cómo usar TensorFlow 2.0 para redes neuronales en Python. El instructor explica las diferencias entre inteligencia artificial, redes neuronales y aprendizaje automático, y proporciona recursos para el curso, incluidos ejercicios de práctica y ejemplos de código.

  • 00:05:00 El aprendizaje automático es un subcampo de la inteligencia artificial que permite a las computadoras generar reglas por sí mismas, sin tener que programarlas explícitamente.

  • 00:10:00 El video explica los conceptos básicos de las redes neuronales y el aprendizaje profundo, y cómo funcionan estos sistemas mediante la transformación de datos a través de múltiples capas. Las redes neuronales se pueden utilizar para una variedad de tareas, incluido el aprendizaje automático y la inteligencia artificial. El video también proporciona un conjunto de datos de ejemplo de las calificaciones de los estudiantes.

  • 00:15:00 Este video analiza la diferencia entre inteligencia artificial, aprendizaje automático y redes neuronales, y luego continúa con el aprendizaje supervisado.

  • 00:20:00 El aprendizaje automático no supervisado se usa cuando no tenemos datos de entrada. Se utiliza para descubrir grupos de puntos de datos que son similares.

  • 00:25:00 Este video proporciona una descripción general de tres tipos diferentes de aprendizaje automático: aprendizaje supervisado, no supervisado y reforzado. El último tipo, el aprendizaje por refuerzo, se explica con más detalle con un ejemplo de un juego en el que un agente de inteligencia artificial (IA) intenta alcanzar un objetivo específico.

  • 00:30:00 En este video, se brinda una introducción básica a TensorFlow, seguida de una discusión sobre cómo funciona la biblioteca en un nivel inferior. Luego se analiza TensorFlow con más detalle, incluidos los dos componentes principales: gráficos y sesiones. Un gráfico es una colección de cálculos parciales que están relacionados entre sí, y una sesión es una forma de ejecutar parte o todo el gráfico.

  • 00:35:00 En este video, el instructor presenta los conceptos básicos de TensorFlow, incluido el concepto de gráficos y sesiones. Luego demuestra cómo usar Google Collaboratory para crear y ejecutar bloques de código, así como importar y usar varios módulos. Finalmente, analiza los beneficios de usar TensorFlow en una computadora con recursos limitados.

  • 00:40:00 En este video, el instructor demuestra cómo importar y usar TensorFlow 2.0 con redes neuronales de Python. TensorFlow es una biblioteca para la manipulación de datos y el aprendizaje automático. TensorFlow 2.0 es una nueva versión de la biblioteca que mejora el rendimiento. El instructor también explica qué es un tensor y cómo generaliza vectores y matrices.

  • 00:45:00 TensorFlow 2.0 presenta tensores, que son objetos importantes que almacenan cálculos parcialmente definidos. Los tensores tienen un tipo de datos y una forma, y cada tensor tiene un rango y un grado. Para determinar el rango de un tensor, use el método de rango de puntos TF.

  • 00:50:00 En este video, el autor presenta el concepto de formas de tensor y explica cómo se pueden usar para identificar la cantidad de elementos en un tensor. También introduce el concepto de rango de tensor y muestra cómo se puede utilizar para controlar el número de dimensiones en un tensor. Finalmente, demuestra cómo remodelar un vector de datos en una forma diferente usando la función de remodelación de puntos TF.

  • 00:55:00 Este video enseña los conceptos básicos de los tensores, incluidos sus diferentes tipos, cómo crear y evaluar tensores y cómo remodelarlos.


Parte 2

  • 01:00:00 Este video explica la idea básica de la regresión lineal, que es un algoritmo de aprendizaje automático utilizado para predecir valores futuros a partir de datos pasados. La regresión lineal se utiliza cuando los puntos de datos se correlacionan de forma lineal.

  • 01:05:00 En este tutorial, aprenderá cómo usar la regresión lineal para predecir nuevos puntos de datos usando una línea de mejor ajuste.

  • 01:10:00 En este video, el presentador explica cómo se usa la regresión lineal para predecir valores en un conjunto de datos. Primero explican cómo funciona la regresión lineal en tres dimensiones y luego muestran cómo codificarla en TensorFlow.

  • 01:15:00 El video presenta el conjunto de datos del Titanic y explica por qué la regresión lineal es un buen algoritmo para predecir quién sobrevivirá en el barco. El conjunto de datos se carga en pandas y Excel.

  • 01:20:00 Este video explica cómo usar un marco de datos para almacenar datos y cómo usar el operador de punto para buscar valores específicos dentro del marco de datos.

  • 01:25:00 En este video, el instructor explica los conceptos básicos de los tensores y cómo se usan en el aprendizaje automático. Luego muestra cómo crear un modelo utilizando un conjunto de datos de entrenamiento y un conjunto de datos de prueba.

  • 01:30:00 En este video, el autor explica cómo crear columnas de características en un conjunto de datos usando TensorFlow. Estas columnas se utilizarán para entrenar un estimador o modelo lineal.

  • 01:35:00 En este video, el instructor explica cómo crear columnas de características y columnas numéricas en un modelo de TensorFlow y cómo entrenar el modelo mediante lotes.

  • 01:40:00 El Curso completo de TF 2.0 explica cómo crear una red neuronal usando Python y cómo entrenar y evaluar la red. El video tutorial muestra cómo crear una función de entrada y cómo usar la función para crear imágenes del conjunto de datos de panda.

  • 01:45:00 Este resumen de 1 párrafo explica cómo usar un modelo de TensorFlow para hacer predicciones sobre un conjunto de datos. Primero, crea el modelo usando la sintaxis del módulo estimador. A continuación, entrena el modelo utilizando un objeto clasificador lineal. Finalmente, evalúa el modelo e imprime la precisión.

  • 01:50:00 Este video explica cómo usar TensorFlow para crear redes neuronales para predecir resultados, incluido cómo recorrer las predicciones y acceder a los valores reales.

  • 01:55:00 En este tutorial, el autor muestra cómo usar TensorFlow para entrenar una red neuronal para predecir las especies de flores a partir de un conjunto de datos. El autor también explica los diferentes tipos de redes neuronales y cómo utilizar las funciones de entrada para optimizar su rendimiento.


parte 3

  • 02:00:00 En este video, el autor recorre el proceso de creación de una red neuronal en TensorFlow 2.0 y explica los diferentes modelos disponibles. Luego muestran cómo construir la red neuronal y entrenarla usando un clasificador dnn.

  • 02:05:00 En este video, se crea una función de entrenamiento y evaluación para una red neuronal. Se utiliza una lambda para definir la función en una línea. A continuación, la función se utiliza para entrenar la red neuronal. Se muestra la precisión de la red neuronal entrenada.

  • 02:10:00 El video muestra cómo usar la función de predicción de TensorFlow para predecir la clase de una flor. El usuario primero ingresa las características de la flor, como la longitud del sépalo, la longitud del pétalo y el ancho. Luego, crean un diccionario predictivo y lo alimentan con las características. Luego, TensorFlow predice la clase de la flor en función de las características de entrada. Finalmente, el usuario imprime la predicción y la probabilidad de la predicción.

  • 02:15:00 Este video cubre los conceptos básicos de las redes neuronales, incluida la clasificación y el agrupamiento.

  • 02:20:00 El video explica cómo usar las redes neuronales de Python para agrupar puntos de datos. Después de etiquetar todos los puntos de datos, el video explica cómo encontrar el centro de masa más cercano entre todos los grupos y cómo reasignar los puntos de datos al grupo más cercano.

  • 02:25:00 En este video, el instructor cubre los conceptos básicos de las redes neuronales y los modelos ocultos de Markov. Comienza discutiendo los tipos de datos utilizados en el aprendizaje automático, como k-means y la regresión lineal. Luego analiza un modelo meteorológico básico y cómo crear un modelo oculto de Markov para predecir el clima en un día determinado.

  • 02:30:00 En este video tutorial, el presentador presenta los conceptos básicos de TensorFlow, incluido su uso para redes neuronales. Luego pasa a demostrar cómo crear un modelo meteorológico básico en TensorFlow, usando dos estados y dos distribuciones de probabilidad. Luego, el presentador demuestra cómo usar el modelo para predecir la temperatura para la próxima semana.

  • 02:35:00 Este video muestra cómo usar TensorFlow para crear una red neuronal para predecir la temperatura promedio en cada día de una secuencia determinada. El video explica cómo importar los módulos necesarios y crear un modelo. El modelo predice correctamente la temperatura promedio en el primer día de la secuencia, pero predice la temperatura incorrecta en los días subsiguientes. Después de solucionar el problema, el video demuestra cómo usar un módulo TensorFlow diferente para predecir con éxito la temperatura promedio en cada día de la secuencia.

  • 02:40:00 Este video describe cómo ejecutar un modelo en TensorFlow 2.0 usando el comando Mean. Este es un comando útil para comparar los valores esperados de las variables en un modelo.

  • 02:45:00 En este módulo, el instructor analizará las redes neuronales y cómo funcionan, además de explicar cómo una red neuronal se compone de capas. También discutirá cómo una capa de entrada recibe datos sin procesar y cómo una red neuronal podría clasificar esos datos.

  • 02:50:00 El "Curso completo de TensorFlow 2.0 - Tutorial de redes neuronales de Python para principiantes" proporciona una guía paso a paso para crear una red neuronal básica en Python. La primera capa es una neurona de entrada, seguida de una capa oculta y luego una capa de salida. La capa de salida tiene una neurona por cada información de entrada, y las neuronas de la capa oculta están conectadas entre sí y con la capa de salida. La capa oculta está conectada a la capa de entrada y a la capa de salida, que se denomina red neuronal densamente conectada.

  • 02:55:00 Este video tutorial demuestra cómo usar Python para redes neuronales, mostrando cómo crear un generador de números aleatorios y entrenar una red neuronal. El video también cubre cómo conectar neuronas y pesos, cómo pasar información a través de la red y cómo calcular el valor de salida de una neurona.


parte 4

  • 03:00:00 En este video, se explica una red neuronal de Python, con la ayuda de una función de activación. Esta función aplasta/cuadra los números negativos y positivos, lo que permite que la red identifique más fácilmente entre los colores rojo y azul.

  • 03:05:00 En este video, el autor explica el concepto de una función de activación y cómo afecta la salida de una red neuronal. También explica cómo se puede utilizar una función de activación para introducir complejidad en la red. Luego, el autor continúa discutiendo una función de pérdida, que se utiliza para entrenar una red neuronal.

  • 03:10:00 Este video presenta el concepto de redes neuronales y describe las tres principales funciones de pérdida utilizadas en el entrenamiento de redes neuronales: error cuadrático medio, error absoluto medio y pérdida de bisagra. Luego pasa a explicar el descenso de gradiente, que es el algoritmo utilizado para optimizar el rendimiento de la red neuronal.

  • 03:15:00 Este tutorial en video presenta los conceptos básicos de TensorFlow, incluido cómo crear y entrenar una red neuronal. El video también cubre el uso de un algoritmo de optimización de redes neuronales y explica cómo evaluar el rendimiento de una red neuronal.

  • 03:20:00 En este video, el instructor demuestra cómo usar TensorFlow para entrenar una red neuronal en Python. El conjunto de datos utilizado en la demostración incluye imágenes de diferentes tipos de ropa, y el instructor muestra cómo usar las funciones de capacitación y prueba en TensorFlow para validar las predicciones de la red.

  • 03:25:00 En este video, el instructor describe los conceptos básicos de una red neuronal, incluidas las capas y los nodos de una red neuronal, y la función de activación utilizada para determinar el valor de salida de una neurona. El instructor también describe cómo crear un modelo en TensorFlow y cómo ejecutar el modelo.

  • 03:30:00 En este videotutorial de 1 hora, el creador cubre los conceptos básicos de TensorFlow, incluidas la arquitectura y el funcionamiento de una red neuronal. Luego pasan a mostrar cómo compilar y ajustar una red neuronal y, finalmente, entrenarla en un conjunto de entrenamiento. Se explica el sobreajuste y se compara la precisión del modelo entrenado con la de un conjunto de prueba.

  • 03:35:00 En este video, el instructor explica cómo las redes neuronales pueden sobreajustarse y cómo mejorar la generalización ajustando los hiperparámetros. Luego demuestra cómo hacer predicciones en imágenes de prueba utilizando el objeto predicho de la red neuronal.

  • 03:40:00 Este tutorial en video enseña cómo usar TensorFlow para construir una red neuronal convolucional para una visión artificial profunda. El video cubre qué es una red neuronal convolucional, cómo funciona y cómo usar modelos pre-entrenados.

  • 03:45:00 El video explica la diferencia entre una red neuronal densa y una red neuronal convolucional, y explica que una red neuronal convolucional aprende patrones locales en lugar de patrones globales.

  • 03:50:00 La red neuronal convolucional (CNN) es un algoritmo de aprendizaje automático que se utiliza para analizar y comprender imágenes. La red neuronal convolucional se compone de varias capas diferentes que se utilizan para analizar y comprender la imagen. La primera capa se utiliza para identificar la presencia de filtros específicos en la imagen.

  • 03:55:00 En este video, el instructor explica cómo encontrar un filtro en una imagen usando el producto cruzado. El filtro se determina en función de la similitud de los valores de píxeles entre la imagen y el filtro.
 

Curso de Keras con TensorFlow - Tutorial de aprendizaje profundo y redes neuronales de Python para principiantes



Curso de Keras con TensorFlow - Tutorial de aprendizaje profundo y redes neuronales de Python para principiantes

El curso de Keras con TensorFlow se centra en enseñar a los usuarios cómo usar Keras, una API de red neuronal escrita en Python e integrada con TensorFlow. Cubre los conceptos básicos de organización y preprocesamiento de datos, construcción y entrenamiento de redes neuronales artificiales, y la importancia de la normalización de datos y la creación de conjuntos de validación. El curso también proporciona recursos como archivos de video y texto y una guía sobre cómo configurar una GPU para una mayor eficiencia. Los usuarios también aprenden cómo guardar y cargar modelos, incluidas las opciones para guardar todo, solo la arquitectura o solo los pesos. El curso es adecuado para aquellos con conocimientos básicos de programación y algo de experiencia con Python.

La segunda sección del "Curso de Keras con TensorFlow" cubre una variedad de temas, comenzando con la carga de pesos en un nuevo modelo de Keras con la misma arquitectura que el modelo original. Luego, el instructor explica cómo preparar y preprocesar datos de imágenes para entrenar una red neuronal convolucional para clasificar imágenes como gatos o perros antes de pasar a construir y entrenar un modelo secuencial de Keras para la primera CNN. La sección incluye detalles para entrenar el modelo usando un generador que contiene datos de etiquetas para la validación durante el ajuste del modelo y cómo trazar una matriz de confusión para evaluar el rendimiento del modelo. Concluye demostrando cómo ajustar un modelo VGG 16 previamente entrenado para clasificar imágenes de gatos y perros, ajustar su preprocesamiento y entrenarlo también.

En la tercera sección, el instructor presenta MobileNets, una alternativa más pequeña y rápida a modelos más complejos. Demuestran cómo descargar y usar MobileNets en un Jupyter Notebook, organizar un conjunto de datos para los dígitos del lenguaje de señas y ajustar el modelo para una nueva tarea de clasificación. El instructor enfatiza la importancia de apuntar correctamente el iterador a la ubicación del conjunto de datos en el disco, la cantidad de capas para congelar durante el entrenamiento y ajustar los hiperparámetros para reducir los problemas de sobreajuste. La sección final presenta el aumento de datos y su potencial para reducir el sobreajuste y aumentar el tamaño del conjunto de datos, y brinda instrucciones sobre los diferentes tipos de aumento (p. ej., desplazamiento, volteo, rotación), guardar imágenes aumentadas en el disco y agregarlas nuevamente al entrenamiento. colocar.

  • 00:00:00 En esta sección se explica que el curso está enfocado en enseñar a usar Keras, una API de red neuronal escrita en Python e integrada con TensorFlow. Comienza con los conceptos básicos de organización y preprocesamiento de datos y luego continúa con la construcción y entrenamiento de redes neuronales artificiales. El curso recomienda algunas habilidades básicas de programación y algo de experiencia con Python, pero también brindará breves introducciones a cada concepto de aprendizaje profundo antes de pasar por la implementación del código. El curso también proporciona recursos de video y texto, incluidos los archivos de código utilizados en el curso, que se prueban y mantienen regularmente, y el acceso a la descarga de estos archivos está disponible para los miembros de Deep Lizard Hive Mind. Se explica además que Keras se desarrolló con un enfoque en permitir la experimentación rápida del usuario y, al estar integrado con TensorFlow, Keras ahora está completamente integrado con la API de TensorFlow. Se proporcionan recomendaciones para aprender varias API de redes neuronales y no quedarse con una para siempre para demostrar la experiencia y la comparación entre ellas, lo que hace que el candidato sea más valioso.

  • 00:05:00 En esta sección del curso de Keras con TensorFlow, se analiza la necesidad de una GPU y se señala que no es necesaria para el curso. Sin embargo, si un usuario quiere usar una GPU, hay una guía disponible sobre cómo configurar la GPU para que funcione con TensorFlow. Se recomienda realizar el curso primero con una CPU y luego configurar la GPU para aumentar la eficiencia y la velocidad. La siguiente sección analiza cómo preparar y procesar datos numéricos para la red neuronal artificial y los diferentes formatos de datos que espera el modelo secuencial en Keras. La función de ajuste espera que los datos de entrada (x) estén en una matriz NumPy, un tensor TensorFlow, un mapeo de dictados, un conjunto de datos TF o un generador Keras. Los datos de destino (y) también deben estar en el mismo formato que x.

  • 00:10:00 En esta sección, el instructor explica que las técnicas de normalización o estandarización de datos pueden colocar los datos en un formato que facilite el aprendizaje del modelo de aprendizaje profundo. El instructor usa un conjunto de datos numérico simple como ejemplo, donde se probó un fármaco experimental en personas de entre 13 y 100 años, y alrededor del 95 % de los pacientes que estaban en la población mayor, de 65 años o más, experimentaron efectos secundarios, mientras que alrededor del 95 % % de pacientes menores de 65 años que no experimentaron efectos secundarios. Luego, el instructor pasa por un ciclo for que genera números enteros aleatorios que imitan el escenario de la vida real de pacientes que experimentaron o no experimentaron efectos secundarios, y luego agrega estas muestras y las etiquetas correspondientes a dos listas separadas.

  • 00:15:00 En esta sección del video, el instructor resume el proceso de generación y preparación de datos para una red neuronal usando matrices NumPy en la API de Keras integrada en TensorFlow. Explican que la lista de muestras contiene edades, y la lista de etiquetas contiene ceros y unos que representan efectos secundarios, o ningún efecto secundario, para corresponder con cada edad. Luego, los datos se procesan y transforman en el formato de matriz NumPy que espera la función de ajuste, y los datos se mezclan utilizando la función de reproducción aleatoria para eliminar cualquier orden impuesto del proceso de generación de datos. Además, los datos se reescalan de una escala de 13 a 100, hasta una escala de cero a uno, y se remodelan para que la función de transformación de ajuste acepte datos unidimensionales. Por último, el instructor demuestra cómo construir una red neuronal artificial a partir de estos datos, utilizando un modelo secuencial de la API de keras.

  • 00:20:00 En esta sección del video, el presentador explica cómo crear un modelo de red neuronal utilizando la API de Keras integrada con TensorFlow. El modelo es un modelo secuencial y se crea como una instancia de la clase Sequential. La primera capa densa crea la primera capa oculta y tiene 16 unidades con la función de activación ReLU. La segunda capa densa crea la segunda capa oculta y tiene 32 unidades con la función de activación ReLU. La última capa es la capa de salida con dos unidades que representan las dos clases de salida posibles. El presentador explica que a la capa de salida le sigue la función Softmax, que da probabilidades para cada clase de salida. Luego, el presentador demuestra cómo usar la función model.summary() para mostrar un resumen visual de la arquitectura del modelo.

  • 00:25:00 En esta sección, aprendemos cómo entrenar una red neuronal con los datos que se crearon y procesaron en las secciones anteriores. Después de construir nuestro modelo, lo compilamos con la pérdida, el optimizador y las métricas apropiados. Luego especificamos los datos de entrada, los datos objetivo, el tamaño del lote y el número de épocas para el entrenamiento en la función de ajuste. Comienza el entrenamiento y vemos que dentro de 30 épocas, nuestro modelo simple logra una precisión del 94% sin mucho esfuerzo. Esto sirve como un gran ejemplo de la facilidad de comenzar con Keras.

  • 00:30:00 En esta sección, se explica el concepto de conjunto de validación en el contexto del entrenamiento de modelos de aprendizaje automático y se destaca la importancia de su uso. La creación de un conjunto de validación permite a los usuarios medir qué tan bien un modelo generaliza los datos en los que no se ha entrenado. El sobreajuste se puede evitar examinando la precisión de los resultados del conjunto de validación, que no debe ser significativamente menor que la de los datos de entrenamiento. Se analizan dos métodos para crear y utilizar conjuntos de validación con un modelo secuencial de Keras, y el segundo método permite que Keras cree el conjunto de validación para el usuario.

  • 00:35:00 En esta sección, el video explica cómo crear un conjunto de validación a partir del conjunto de entrenamiento usando el parámetro de división de validación, que divide un porcentaje específico de los datos de entrenamiento en un conjunto de validación. El video señala que el conjunto de validación está completamente fuera del conjunto de entrenamiento y se creará sobre la marcha cada vez que se llame a la función de ajuste. También es importante mezclar los datos de entrenamiento antes de pasarlos para que se ajusten a fin de garantizar que el conjunto de validación no sea solo el último X por ciento de los datos no mezclados. El video también explica cómo usar el conjunto de validación para verificar si el modelo se ajusta en exceso o se generaliza bien, y analiza el siguiente paso para usar un conjunto de prueba para la inferencia.

  • 00:40:00 En esta sección, el instructor explica el proceso de inferencia en el aprendizaje profundo. La inferencia es el proceso de implementar un modelo entrenado en los conjuntos de datos del mundo real para obtener predicciones sobre nuevos datos que el modelo no ha visto antes. Para asegurarse de que el modelo pueda generalizar lo suficientemente bien como para hacer predicciones precisas sobre nuevos datos, el instructor sugiere usar un conjunto de prueba. El conjunto de prueba debe procesarse en el mismo formato que los datos de entrenamiento. El autor demuestra cómo hacerlo mezclando los datos de prueba, escalándolos para que estén entre 0 y 1, y prediciendo los datos de prueba con un modelo entrenado para obtener la probabilidad de la clase a la que pertenece cada elemento del conjunto de prueba.

  • 00:45:00 En esta sección, analizamos el uso de una matriz de confusión para observar visualmente qué tan bien predice un modelo de red neuronal en los datos de prueba. Al importar los paquetes necesarios y crear una matriz de confusión con scikit-learn, podemos comparar las etiquetas verdaderas del conjunto de prueba con las etiquetas predichas y, por lo tanto, comprender mejor la precisión de las predicciones de nuestro modelo. También vemos cómo trazar la función de matriz de confusión y cómo se obtienen, preprocesan y visualizan ciertos valores en ella. Un enlace a una función útil para el curso de Keras con TensorFlow también está disponible en el blog de deep lizard.

  • 00:50:00 En esta sección, el instructor demuestra cómo trazar una matriz de confusión para visualizar la precisión de las predicciones del modelo. La gráfica muestra las etiquetas pronosticadas en el eje x y las etiquetas verdaderas en el eje y. Las predicciones correctas se muestran en cuadrados azules que van en diagonal desde la parte superior izquierda hasta la parte inferior derecha de la gráfica. La matriz de confusión le permite al usuario visualizar qué tan bien está funcionando el modelo e identificar las clases que podrían necesitar mejoras. El instructor explica que la matriz de confusión es una gran herramienta para evaluar el rendimiento de un modelo y puede ayudar a profundizar en qué clases necesitan más trabajo. Finalmente, el instructor muestra cómo guardar un modelo secuencial de Keras usando la función `.save()`, que guarda la arquitectura, los pesos y la configuración de entrenamiento del modelo en un archivo h5.

  • 00:55:00 En esta sección, el instructor repasa las diferentes formas de guardar y cargar un modelo en Keras con TensorFlow. La primera y más completa opción es guardar y cargar todo sobre el modelo, incluida su arquitectura, pesos y configuración de entrenamiento. La segunda opción es guardar solo la arquitectura del modelo usando la función "a JSON", que luego se puede usar para crear un nuevo modelo con la misma arquitectura en un momento posterior. La tercera opción es guardar solo los pesos del modelo utilizando la función "guardar pesos", que se puede cargar en un nuevo modelo para actualizar sus pesos, pero no guarda ningún otro detalle sobre el modelo. El instructor también explica que se puede realizar el mismo proceso utilizando cadenas YAML en lugar de cadenas JSON.
  • 01:00:00 En esta sección, el presentador analiza la carga de pesos en un nuevo modelo de Keras con la misma arquitectura que el modelo original. Explica que la forma de los pesos que se cargan debe coincidir con la forma de la arquitectura del modelo para que funcione el mapeo de los pesos. Luego, el presentador muestra cómo cargar y llenar un nuevo modelo con pesos del modelo original utilizando las funciones "cargar pesos" y "obtener pesos" en Keras. Luego, la sección pasa a un nuevo tema, que es la preparación y el procesamiento de datos de imágenes para entrenar una red neuronal convolucional para clasificar imágenes como gatos o perros, utilizando el conjunto de datos de la competencia de gatos contra perros de Kaggle. El presentador explica los pasos manuales y programáticos necesarios para preparar los datos para su procesamiento.

  • 01:05:00 En esta sección, el instructor organiza los datos en tres subconjuntos: conjuntos de entrenamiento, validación y prueba. El conjunto de datos utilizado en el tutorial tiene 25 000 imágenes de gatos y perros, pero para acelerar el proceso de entrenamiento, solo se usan 1000 imágenes para el entrenamiento, 200 para la validación y 100 para las pruebas. Los datos se organizan en diferentes directorios para cada conjunto, y la estructura del directorio se verifica para asegurarse de que no exista. Las imágenes se seleccionan aleatoriamente en función de los nombres de archivo, donde las imágenes de perros y gatos tienen las palabras "gato" y "perro" en sus respectivos nombres de archivo. Finalmente, la ruta de datos se especifica para que cada conjunto apunte a la ubicación correcta en el disco.

  • 01:10:00 En esta sección, el video explica cómo preparar datos para un modelo secuencial de Keras creando lotes de datos usando el generador de datos de imagen. Los conjuntos de entrenamiento, validación y prueba se definen y se redimensionan a una altura y ancho especificados para lograr uniformidad. La función de preprocesamiento, tf.keras.applications.VGG16.preprocess_input, se aplica a las imágenes antes de que pasen a la red. El video advierte a los espectadores que no se preocupen por los detalles técnicos del preprocesamiento, como se explicará en futuros episodios. Además, el video especifica que mezclar es igual a falso para el conjunto de prueba, lo que explica que cuando se ejecuta la inferencia, las etiquetas no definidas para el conjunto de prueba son necesarias para ver los resultados de predicción en una matriz de confusión, y los datos no deben mezclarse para acceder a ellos.

  • 01:15:00 En esta sección, el instructor demuestra cómo obtener y organizar datos de imágenes para una red neuronal convolucional. Los lotes de trenes, que constan de diez imágenes y las etiquetas correspondientes, se trazan mediante una función de preprocesamiento que distorsiona los datos de color RGB. Sin embargo, las imágenes todavía se pueden distinguir como un gato o un perro con la ayuda de un vector codificado en caliente para las etiquetas. El instructor señala que a veces las etiquetas correspondientes para el conjunto de prueba pueden no estar disponibles y dirige a los espectadores al blog para obtener orientación sobre el manejo de tales casos. El episodio concluye con una vista previa de la siguiente sección, donde se construirá y entrenará una red neuronal convolucional con datos de imágenes de gatos y perros.

  • 01:20:00 En esta sección del tutorial de TensorFlow, se utiliza un modelo secuencial de Keras para la primera red neuronal convolucional (CNN). La primera capa del modelo es una capa convolucional 2D con 32 filtros y un tamaño de núcleo de 3x3 seguida de la popular función de activación ReLU con relleno "mismo" para rellenar con cero las imágenes. La forma de entrada se especifica como 224x224x3 para las imágenes en formato RGB. A la primera capa convolucional le sigue una capa de agrupación máxima con un tamaño de agrupación de 2x2 y pasos de 2. Se agrega otra capa convolucional 2D, similar a la primera pero con 64 filtros en lugar de 32, seguida de otra capa de agrupación máxima. La salida aplanada de la capa de agrupación máxima luego se pasa a una capa de salida densa con dos nodos correspondientes a gato y perro, respectivamente. La capa de salida es seguida por la función de activación softmax para dar probabilidades para cada salida correspondiente del modelo.

  • 01:25:00 En esta sección, el instructor analiza cómo entrenar un modelo usando Keras con TensorFlow y cómo usar un generador que contiene datos de etiquetas para la validación durante el ajuste del modelo. El modelo se entrena con compilación, y luego la función de ajuste se define usando los conjuntos de entrenamiento y validación, y se establecen la época y la verbosidad. La advertencia que ocurre durante el entrenamiento es un error dentro de TensorFlow y el instructor indica cómo ignorar esta advertencia. Los resultados muestran que, si bien la precisión en el conjunto de entrenamiento es del 100 %, la precisión de la validación es solo del 69 %, lo que indica un sobreajuste. El modelo necesitará más atención para combatir el problema de sobreajuste si se va a utilizar en producción. El próximo episodio explorará cómo el modelo entrenado soporta la inferencia en la predicción de imágenes en el conjunto de prueba.

  • 01:30:00 En esta sección del video, el instructor explica el proceso de usar una función de trazado de imágenes para trazar un lote de datos de prueba a partir de lotes de prueba e imprimir las etiquetas correspondientes para las imágenes. El instructor enfatiza la importancia de no mezclar el conjunto de datos de prueba para asegurar el mapeo correcto entre etiquetas y muestras. A continuación, las predicciones se obtienen llamando a model.predict con lotes de prueba especificados como entrada. El instructor imprime las predicciones redondeadas y explica cómo interpretarlas. También mencionan el uso de una matriz de confusión para visualizar los resultados, y la función de matriz de confusión de scikit-learn se usa con las etiquetas verdaderas pasadas al usar clases de lotes de prueba.

  • 01:35:00 En esta sección, el video explica cómo trazar una matriz de confusión para evaluar el rendimiento del modelo en la clasificación de imágenes de gatos y perros mediante la API Keras de TensorFlow. La matriz de confusión se traza mediante una función de scikit-learn y los índices de clase se ajustan en consecuencia. La diagonal de la matriz de confusión representa las predicciones correctas y el modelo parece estar sobreajustado. La siguiente sección demostrará cómo ajustar un modelo VGG 16 previamente entrenado para clasificar imágenes de gatos y perros, que ganó la competencia ImageNet 2014. El video también explica brevemente la función de preprocesamiento de VGG 16, que solo resta el valor RGB medio calculado de cada píxel del conjunto de entrenamiento de los datos de la imagen.

  • 01:40:00 En esta sección, el instructor explica el procesamiento previo que se realizó para el modelo VGG-16 y cómo los nuevos datos deben procesarse de la misma manera para que coincidan con la forma en que se entrenó originalmente VGG-16. El instructor menciona que Keras tiene funciones integradas para modelos populares como VGG-16, que tiene un preprocesamiento que coincide con el modelo correspondiente. El instructor también explica que el modelo VGG-16 originalmente predecía para 1000 clases diferentes de imageNet, y el objetivo es cambiar la última capa de salida para predecir solo dos clases de salida correspondientes a gato y perro. Finalmente, el instructor crea un nuevo modelo secuencial recorriendo cada capa VGG-16 y excluyendo la última capa de salida. Este nuevo modelo es para ajuste fino y solo tiene dos clases de salida.

  • 01:45:00 En esta sección, vemos cómo modificar y entrenar el modelo VGG 16 ajustado en un conjunto de datos de gatos y perros. Se eliminó la última capa del modelo, que predice 1000 clases de salida, y se agregó una nueva capa densa que tiene solo dos clases de salida para gatos y perros. Todas las capas anteriores se han configurado para que no se puedan entrenar, excepto la capa de salida que contiene 8000 parámetros entrenables. El modelo se compila usando la entropía cruzada categórica como la pérdida y la precisión como la métrica, y se entrena usando el método fit() pasándole el conjunto de datos de entrenamiento y el conjunto de validación.

  • 01:50:00 En esta sección, el instructor analiza los resultados del entrenamiento del modelo VGG 16 en imágenes de gatos y perros con una especificidad sobre la precisión de los conjuntos de entrenamiento y validación. El modelo VGG 16 ya se había entrenado con imágenes de gatos y perros de la biblioteca de imágenes en red, y el entrenamiento que se está realizando en la capa de salida es entrenar el modelo para generar solo clases de gatos o perros. En solo cinco épocas, el modelo VGG 16 tuvo una precisión de entrenamiento del 99 %, mientras que la precisión de validación estuvo a la par en un 98 %, lo que indica cuán bien este modelo generaliza los datos de gatos y perros en conjuntos de validación en comparación con la red neuronal convolucional simple. En el próximo episodio, el modelo VGG 16 ajustado se usará para la inferencia para predecir imágenes de gatos y perros en el conjunto de prueba y, dada la precisión en el conjunto de validación, deberíamos esperar ver buenos resultados también en el conjunto de prueba. .

  • 01:55:00 En esta sección del video, el instructor analiza el uso de una matriz de confusión para evaluar el rendimiento de un modelo VGG16 ajustado en un conjunto de prueba invisible. Se examina la diagonal de la matriz de confusión, lo que revela que el modelo logró una tasa de precisión del 96 %. Si bien el enfoque de ajuste fino adoptado para el modelo VGG16 fue mínimo, el instructor explica que los próximos episodios cubrirán más métodos de ajuste fino en otros modelos previamente entrenados, como MobileNets. Estos modelos más pequeños y de bajo consumo son más adecuados para su implementación en dispositivos móviles debido a su tamaño y cantidad de parámetros considerablemente más pequeños.
  • 02:00:00 En esta sección del video, el instructor presenta MobileNets, una alternativa más pequeña y rápida a los modelos más grandes como el VGG 16. Si bien los MobileNets no son tan precisos como algunos de estos modelos pesados, la reducción en la precisión es relativamente pequeña. El instructor recorre los pasos para descargar y trabajar con MobileNets en un Jupyter Notebook, incluida la importación de los paquetes necesarios, la descarga y asignación del modelo MobileNet y la creación de una función llamada "prepare_image" para cambiar el tamaño y formatear las imágenes antes de pasarlas por MobileNet. modelo para el procesamiento. En general, la atención se centra en comprender las compensaciones entre precisión y tamaño/velocidad cuando se trabaja con diferentes modelos de aprendizaje profundo y cómo usarlos de manera efectiva.

  • 02:05:00 En esta sección, el instructor demuestra cómo usar un modelo de MobileNet previamente entrenado para predecir las cinco clases posibles de imágenes dadas. Primero muestran una imagen de lagarto y la pasan a través de una función de preprocesamiento antes de pasarla a la función de predicción de MobileNet. MobileNet predice las tres clases principales con altas probabilidades, siendo el camaleón americano la más probable. Repiten el mismo proceso con una imagen de una taza de café y el modelo predice que es un espresso con un 99% de probabilidad. Finalmente, pasan una imagen de fresa al modelo y obtienen las predicciones para las mejores clases posibles.

  • 02:10:00 En esta sección del video, el presentador muestra los resultados de las predicciones del modelo de red móvil para una muestra aleatoria de imágenes, que incluye una fresa y otras frutas. El presentador menciona que aunque hubo una pequeña reducción en la precisión del modelo, no se nota al hacer pruebas como las que se muestran en el video. El siguiente paso es afinar el modelo de red móvil para un conjunto de datos personalizado que consta de dígitos en lenguaje de señas. El presentador muestra cómo organizar el conjunto de datos en el disco y moverlo al directorio de trabajo antes de procesarlo mediante programación en un Jupyter Notebook.

  • 02:15:00 En esta sección, el instructor explica cómo organizar datos de imágenes en directorios de entrenamiento, válidos y de prueba usando un script de Python. El primer paso es verificar la cantidad de muestras en cada clase, que varía de 204 a 208. Luego, usando un bucle for, el script mueve cada directorio de clase al directorio de tren y crea directorios separados para conjuntos válidos y de prueba para cada clase. . Finalmente, el script toma muestras de imágenes aleatorias de cada clase en el directorio de tren, las mueve al directorio válido y toma muestras de más imágenes y las mueve al directorio de prueba. Después de ejecutar el script, los datos se organizan en directorios separados para cada conjunto y la cantidad de imágenes en cada clase se puede verificar al verificar los directorios correspondientes.

  • 02:20:00 En esta sección del video, el orador analiza la estructura organizativa del conjunto de datos con el que trabajará, que es similar al conjunto de datos de gatos y perros que se usó anteriormente en el curso, pero ahora contiene 10 clases en lugar de dos. Luego demuestran cómo preprocesar los datos definiendo los directorios de entrenamiento, validación y prueba y creando iteradores de directorios usando el generador de datos de imágenes. La función de preprocesamiento utilizada es la función de preprocesamiento de la red móvil, que escala los datos de la imagen para que estén en una escala de menos uno a uno. También se definen las configuraciones del iterador, como el tamaño de la imagen de destino y el tamaño del lote. El orador enfatiza la importancia de apuntar correctamente el iterador a la ubicación del conjunto de datos en el disco, ya que apuntar incorrectamente podría resultar en que no se encuentren imágenes.

  • 02:25:00 En esta sección del curso Keras con TensorFlow, el instructor explica cómo ajustar el modelo MobileNet previamente entrenado para una nueva tarea de clasificación. El primer paso es descargar el modelo de MobileNet y examinar sus capas usando la función "model.summary()". Luego seleccionan las capas hasta la sexta a la última capa y crean una nueva capa de salida densa con 10 unidades. A esto le sigue la creación de un nuevo modelo funcional que pasa todas las capas anteriores hasta la sexta a la última capa y la red móvil a la capa de salida. Se crea el nuevo modelo y el siguiente paso es congelar todas menos las últimas 23 capas para el entrenamiento. El instructor señala que la cantidad de capas para congelar requiere experimentación personal y puede variar según la tarea.

  • 02:30:00 En esta sección, el instructor ajusta el modelo MobileNet original, entrenando solo las últimas 23 capas y reemplazando la capa de salida con una que tiene 10 clases en lugar de 1000. El modelo se compila y entrena utilizando el optimizador Adam con una tasa de aprendizaje de 0,0001 y una función de pérdida de entropía cruzada categórica. Después de entrenar durante 30 épocas, el modelo alcanza un 100 % de precisión en el conjunto de entrenamiento y un 92 % de precisión en el conjunto de validación. Aunque hay algo de sobreajuste, con una precisión de validación menor que la precisión del entrenamiento, el instructor sugiere que ejecutar más épocas o ajustar hiperparámetros puede ayudar a reducir el problema de sobreajuste.

  • 02:35:00 En esta sección del video, el instructor muestra cómo usar un modelo ajustado en el conjunto de prueba y trazar las predicciones en una matriz de confusión. La matriz de confusión indica que el modelo se ha desempeñado bien con predicciones en su mayoría correctas en el conjunto de prueba. El modelo tiene una precisión del 90 % en el conjunto de prueba, lo que se espera dada la precisión en el conjunto de validación. El instructor enfatiza que la serie sobre MobileNet ha brindado información sobre cómo ajustar modelos para conjuntos de datos personalizados y utilizar el aprendizaje por transferencia. El próximo episodio demostrará cómo usar el aumento de datos en imágenes usando la API Keras de TensorFlow.

  • 02:40:00 En esta sección, se destaca la importancia del aumento de datos para el aprendizaje profundo, especialmente cuando no hay suficientes datos para entrenar el modelo. El aumento de datos puede ayudar a reducir el sobreajuste y aumentar el tamaño del conjunto de entrenamiento. Luego se presenta el código para aumentar los datos de imágenes con Keras, donde se crea un generador de datos de imágenes y se especifican varios parámetros de aumento, como el rango de rotación, el rango de cambio de ancho y el rango de zoom. Se elige una imagen aleatoria de un directorio de perros y se llama a la función de flujo para generar un lote de imágenes aumentadas a partir de esta única imagen. Las imágenes aumentadas resultantes se trazan luego usando una función de imágenes de trazado predefinida.

  • 02:45:00 En esta sección, el instructor analiza el aumento de datos, que es un método para aumentar artificialmente el tamaño de un conjunto de datos mediante la creación de variaciones de los datos existentes. Al mirar diferentes imágenes, el instructor identifica los tipos de aumento de datos que se les han hecho, como desplazamiento, volteo y rotación, y explica cómo esta técnica puede ser útil para hacer crecer un conjunto de datos. Al aumentar la variedad del conjunto de datos, un modelo puede volverse más sólido y mejor en la clasificación de datos. El instructor también proporciona una breve instrucción para guardar estas imágenes aumentadas en el disco y volver a agregarlas al conjunto de entrenamiento.
 

Curso acelerado de Scikit-learn: biblioteca de aprendizaje automático para Python



Curso acelerado de Scikit-learn: biblioteca de aprendizaje automático para Python

El video "Curso acelerado de Scikit-learn" brinda una descripción general del uso de la biblioteca Scikit-learn para el aprendizaje automático en Python. El video cubre la preparación de datos, la creación y el ajuste de modelos, el ajuste de hiperparámetros a través de la búsqueda de cuadrículas y la evaluación de modelos. Se enfatiza la importancia del preprocesamiento y los transformadores para mejorar el rendimiento del modelo, con ejemplos de escalador estándar y transformador de cuantiles. El video también analiza la importancia de la evaluación del modelo y la elección de la métrica correcta para el problema, así como el manejo de conjuntos de datos desequilibrados y categorías desconocidas en la codificación one-hot. El orador enfatiza la comprensión del conjunto de datos y los posibles sesgos en las predicciones del modelo, y brinda un ejemplo de detección de fraude con tarjetas de crédito.

La segunda parte del video cubre varios temas, incluida la búsqueda de cuadrículas, métricas, canalizaciones, ajuste de umbral, modelado de series temporales y manejo de valores atípicos. El instructor explora el uso de métricas personalizadas y la importancia de equilibrar la precisión y la recuperación en la creación de modelos. Además, el clasificador de votos se muestra como un metaestimador que aumenta la flexibilidad y expresividad del modelo. El video concluye presentando la herramienta Human Learn, que ayuda a construir y comparar sistemas basados en reglas que se pueden combinar con algoritmos de aprendizaje automático. Además, se explora la herramienta FunctionClassifier, que permite a los usuarios crear una lógica personalizada como un modelo clasificador y agregar comportamientos como la detección de valores atípicos. En general, el video brinda una descripción general completa de Scikit-learn y su API flexible, y enfatiza la importancia de comprender las métricas relevantes para la creación y personalización de modelos.

  • 00:00:00 Los datos y. X contiene las características o variables de entrada, mientras que Y contiene la variable objetivo o de salida que queremos predecir. Dividimos los datos en un conjunto de entrenamiento y un conjunto de prueba para evaluar el rendimiento del modelo. A continuación, necesitamos preprocesar los datos. Una de las técnicas de preprocesamiento más importantes es el escalado, que consiste en normalizar los valores de las características para que todas se encuentren dentro de un rango similar. Esto ayuda al modelo a aprender de manera más efectiva. Finalmente, elegimos un modelo y lo entrenamos en el conjunto de entrenamiento. Una vez que se entrena el modelo, evaluamos su rendimiento en el conjunto de prueba y hacemos predicciones sobre nuevos datos. En las siguientes secciones, profundizaremos en los temas de preprocesamiento, evaluación de modelos y metaestimadores.

  • 00:05:00 En esta sección, el orador analiza cómo dividir datos en conjuntos x e y para modelos de aprendizaje automático. El conjunto x representa los datos utilizados para hacer predicciones, mientras que el conjunto y contiene la predicción de interés. Con la biblioteca scikit-learn, los usuarios pueden cargar conjuntos de datos de referencia con fines educativos. El orador también explica el proceso de dos fases de crear y ajustar un modelo para aprender de los datos con el fin de hacer predicciones. El modelo de k-vecino más cercano se usa como ejemplo, pero también se muestra el modelo de regresión lineal para ilustrar cómo diferentes modelos pueden tener la misma API dentro de scikit-learn.

  • 00:10:00 En esta sección, el video del curso acelerado de Scikit-learn explica cómo funciona el modelo de K-vecino más cercano en un conjunto de datos simple que presenta los pies cuadrados que tiene una casa y su proximidad a las escuelas. El modelo hace predicciones basadas en los 5 vecinos más cercanos, pero el desafío puede surgir cuando se usan distancias que tienen diferentes escalas, lo que significa que un eje puede tener un efecto mucho mayor en las predicciones que otro. Esto requiere repensar qué es un modelo de aprendizaje automático y sugiere que debe haber algún preprocesamiento antes de que los datos se entreguen al modelo vecino más cercano K, de modo que la escala se realice antes de que se hagan las predicciones, y que todo dentro del pre- caja de procesamiento es parte del modelo.

  • 00:15:00 En esta sección, el video explora el concepto de canalización en Scikit-learn, que permite el encadenamiento de pasos de procesamiento y la llamada de ajuste de puntos y predicción de puntos para toda la canalización cuando se entrena. Mediante el uso de una canalización, es posible manejar los pasos de preprocesamiento automáticamente, como el escalado y la normalización, para aprender de los datos y garantizar un sistema sólido. Sin embargo, este enfoque introduce un problema en el que el modelo puede memorizar los datos originales. El video muestra cómo el gráfico sugiere falsamente una predicción perfecta, pero el modelo solo puede hacerlo porque puede memorizar el punto de datos original, lo que impide una comparación justa y una predictibilidad confiable en los nuevos datos.

  • 00:20:00 En esta sección, el instructor explica el método para evaluar el rendimiento de un modelo utilizando un conjunto de datos de prueba separado para evitar juzgar el modelo con el mismo conjunto de datos en el que se entrenó. Sugiere dividir el conjunto de datos en segmentos y usar uno para entrenar y los otros para probar. Además, presenta el objeto cv de búsqueda de cuadrícula de Scikit-learn, que permite la validación cruzada automatizada para determinar los mejores hiperparámetros para usar en el modelo. Este objeto se puede usar con la canalización creada anteriormente para ajustar el modelo y mejorar sus capacidades predictivas.

  • 00:25:00 En esta sección, el instructor revisa varios parámetros del modelo KNearestNeighbors y demuestra cómo usar el objeto GridSearch para encontrar el mejor conjunto de hiperparámetros. El objeto GridSearch realizará automáticamente una validación cruzada y realizará un seguimiento de los resultados, lo que facilita el análisis y la elección de la mejor configuración. Sin embargo, el instructor destaca que si bien es importante usar la API y los componentes básicos apropiados cuando se trabaja con scikit-learn, es igualmente importante comprender y analizar el conjunto de datos que se utiliza. El instructor muestra cómo acceder y mostrar la descripción de un conjunto de datos y enfatiza la importancia de tomarse el tiempo para comprender las variables en el conjunto de datos antes de construir un modelo.

  • 00:30:00 En esta sección, el orador analiza los peligros potenciales de aplicar ciegamente modelos de aprendizaje automático sin comprender completamente los datos que se utilizan para el entrenamiento y la predicción. Incluso las variables aparentemente inocuas, como la proporción de una determinada raza en una ciudad, pueden dar lugar a algoritmos sesgados e incluso racistas. El orador enfatiza la importancia de examinar y probar minuciosamente el modelo antes de implementarlo en producción. El uso de la búsqueda en cuadrícula y otros métodos puede proporcionar garantías estadísticas, pero también puede crear una falsa sensación de optimismo y causar puntos ciegos. Es responsabilidad del usuario informarse sobre los datos que se utilizan y considerar mecanismos éticos y de retroalimentación, así como escenarios alternativos para cuando algo sale mal en la producción.

  • 00:35:00 En esta sección, se destaca la importancia de la transformación de datos en la construcción de modelos. El video analiza el uso de transformadores y su importancia para mejorar el rendimiento del modelo. El escalador estándar de Scikit-Learn se usa para cambiar la escala de un conjunto de datos y, aunque su rendimiento es bueno, el video demuestra cómo podría mejorarse usando otros métodos de escalado. El enfoque consiste en restar la media del conjunto de datos y dividir por la desviación estándar. Si bien el enfoque escala los datos, deja valores atípicos, lo que podría afectar algunos algoritmos. El video enfatiza aún más la importancia del procesamiento previo para lograr los resultados deseados del modelo.

  • 00:40:00 En esta sección del video, el orador analiza el concepto de normalización y cómo usarlo de manera efectiva mediante el cálculo de cuantiles en lugar de valores medios. Mediante el uso de cuantiles, se reduce el efecto de los valores atípicos en los datos y el proceso se vuelve más robusto. El orador demuestra cómo implementar el transformador de cuantiles como un paso de preprocesamiento, reemplazando el escalador estándar, para lograr mejores resultados en los modelos de aprendizaje automático. El profundo efecto del transformador en los datos de salida se muestra a través de una función de salida de gráfico que entrena un modelo de k vecino más cercano y produce predicciones tanto para el escalador estándar como para el transformador de cuantiles.

  • 00:45:00 En esta sección del video, el orador explica cómo el preprocesamiento puede afectar drásticamente la clasificación de los conjuntos de datos. En el primer ejemplo, el orador emplea Quantile Transformer, lo que hace que el modelo sea más estable y se adapte mejor a la hora de lidiar con valores atípicos a largo plazo. El segundo ejemplo muestra cómo la adición de nuevas funciones puede mejorar el rendimiento del modelo. Al generar características no lineales como x1 por x2 y x1 elevado a 2 y x2 elevado a 2 a través de características polinómicas, el modelo de regresión logística pudo producir una clasificación casi perfecta. Finalmente, One Hot Encoder se presenta como una técnica para transformar texto o categorías en datos numéricos que son útiles para predecir clases como riesgo bajo, medio o alto.

  • 00:50:00 En esta sección, el video analiza cómo manejar categorías desconocidas cuando se usa la codificación one-hot con la biblioteca Scikit-learn. El presentador explica que si se le pide al codificador que transforme datos que no ha visto antes, dará como resultado un error de valor. Sin embargo, esto se puede cambiar ajustando el parámetro "handle_unknown" a "ignorar". El video también presenta un sitio web llamado "DrawData.xyz", que permite a los usuarios crear sus propios conjuntos de datos para practicar el preprocesamiento y las canalizaciones. El orador enfatiza que los pasos de preprocesamiento son cruciales porque pueden tener un fuerte impacto en el resultado del modelo. Finalmente, el video explica los beneficios de usar una búsqueda de cuadrícula para comparar múltiples modelos y elegir el mejor para la predicción, usando como ejemplo un conjunto de datos de fraude de tarjetas de crédito.

  • 00:55:00 En esta sección, el video explica la importancia de elegir la métrica correcta y cómo Scikit-learn la maneja. El video utiliza un conjunto de datos de características anonimizadas y montos de transacciones para demostrar cómo se puede usar Scikit-learn para predecir casos de fraude con precisión. Sin embargo, dado que el conjunto de datos está desequilibrado con más casos de fraude que casos de no fraude, el modelo no converge con el número predeterminado de iteraciones. Por lo tanto, se aumenta el número máximo de iteraciones y se ajusta el parámetro de peso de clase para duplicar el peso de los casos de fraude para mejorar la detección de fraude del modelo. El video también presenta GridSearchCV para encontrar el mejor valor para el parámetro de peso de clase.
  • 01:00:00 En esta sección, el instructor explica cómo usar la búsqueda en cuadrícula para encontrar los mejores parámetros de modelo para la regresión logística en scikit-learn. Al definir una cuadrícula de valores de parámetros, el instructor muestra cómo recorrer estos hiperparámetros y probarlos mediante validación cruzada. El objeto de cuadrícula devuelve un diccionario de resultados, incluidos el peso y las puntuaciones de la clase. El modelo de regresión logística tiene un método ligado llamado puntuación, que se utiliza para determinar el mejor modelo. Luego, el instructor presenta dos métricas del módulo de métricas de scikit-learn, la precisión y la puntuación de recuperación, y explica cómo incluirlas en la búsqueda de cuadrícula utilizando un diccionario de puntuación.

  • 01:05:00 En esta sección, el orador agrega la precisión de la prueba y los puntajes de recuperación de la prueba y establece una bandera que permitirá agregar puntajes de entrenamiento a los resultados de la validación cruzada. Luego aumentan el número de validaciones cruzadas y reemplazan el rango de cuatro con un espacio lineal numpy, estableciendo un valor más alto para decirle al algoritmo que se centre en los casos de fraude. Hacen algunos gráficos que resumen los resultados y señalan que centrarse en la memoria o la precisión da como resultado un resultado completamente diferente. Luego deciden crear su métrica, la precisión mínima de recuperación, que calcula el mínimo entre la precisión y la recuperación, y lo agrega a la búsqueda de cuadrícula. Hacen esto para equilibrar las dos métricas y tener un modelo que equilibre las puntuaciones de recuperación y precisión.

  • 01:10:00 , estamos usando la función make_scorer en la búsqueda de cuadrícula con nuestra métrica definida personalizada, min_precision_recall, que acepta y_true y y_pred como entrada. Sin embargo, la función make_scorer requiere un estimador, un conjunto de datos X, y verdadero y algún tipo de ponderación de muestra, por lo que convierte nuestra función métrica en un objeto marcador predictivo que se puede usar en la búsqueda de cuadrícula. El peso de la muestra es una característica adicional que se puede pasar a los modelos de aprendizaje automático y nos permite decir que una fila en particular es más importante que otra. En lugar de usar la función make_scorer, podemos pasar directamente el estimador y calcular los valores de y pronosticados con la función de predicción.

  • 01:15:00 En esta sección, el orador analiza el uso del peso de la muestra para detectar el fraude y muestra cómo se puede agregar a una función para la estabilidad numérica. También demuestran el efecto de agregar peso de muestra en el modelo algorítmico. Luego, el orador propone usar un algoritmo de detección de valores atípicos para detectar el fraude y muestra cómo adaptar las métricas para este enfoque. Reemplazan la regresión logística con un algoritmo de bosque de aislamiento y demuestran cómo esto afecta las puntuaciones de precisión y recuperación. Finalmente, el orador escribe su variante de las funciones de métricas para convertir la predicción de valores atípicos en predicciones de etiquetas de fraude.

  • 01:20:00 En esta sección, el narrador analiza la flexibilidad de la API de Scikit-learn y la capacidad de usar algoritmos de detección de valores atípicos como si fueran clasificadores pasando etiquetas y en métricas personalizadas. Esto puede ser útil para juzgar si un modelo de valores atípicos sería útil en un problema de clasificación. Sin embargo, el narrador advierte que es importante preocuparnos por la calidad de las etiquetas, ya que esto puede afectar significativamente las métricas del modelo. Además, el narrador señala algunas configuraciones de personalización para las métricas, como especificar si cuanto mayor es mejor y la necesidad de una medida de probabilidad para algunas métricas. Por último, el narrador menciona la capacidad de Scikit-learn para trabajar con metamodelos.

  • 01:25:00 En esta sección, el instructor explica cómo funcionan las canalizaciones de scikit-learn y las limitaciones de usar solo canalizaciones de scikit-learn para modelos de aprendizaje automático. El instructor sugiere usar metaestimadores como una forma de sortear las limitaciones de las canalizaciones para agregar pasos adicionales y herramientas de posprocesamiento a un modelo. El instructor brinda un ejemplo de un metaestimador, el clasificador de votación, y cómo se puede usar para equilibrar diferentes modelos para un conjunto de datos otorgando pesos a cada estimador.

  • 01:30:00 En esta sección, el instructor demuestra el uso de un clasificador de votación con scikit-learn, que puede combinar diferentes modelos que funcionan de diferentes maneras para producir predicciones más precisas. Además, este modelo puede ser utilizado como entrada por otros estimadores, aumentando así la flexibilidad y expresividad. El instructor también presenta la idea de ajustar el valor del umbral en un modelo de regresión logística para compensar la precisión de la recuperación o viceversa utilizando el metamodelo del umbral. Esto se demuestra con un ejemplo de cómo usar el modelo de umbral en una búsqueda de cuadrícula. Mediante el uso de estas técnicas proporcionadas por scikit-learn, se pueden ajustar los parámetros del modelo y obtener un mejor rendimiento.

  • 01:35:00 En esta sección, el orador habla sobre el uso de una búsqueda en cuadrícula para ajustar el umbral de un clasificador binario. Muestran que las curvas de precisión y recuperación cambian a medida que cambia el umbral, pero la precisión se mantiene relativamente constante. El orador explica que este tipo de paso de posprocesamiento se implementa mejor como un metamodelo que acepta otro modelo como entrada. Luego, el orador demuestra un ejemplo de construcción de un metamodelo con las clases Pipeline and Group( byRegressor) de Scikit-learn para agrupar datos por dieta y luego usar un modelo de regresión lineal diferente para cada grupo. Explican que este tipo de agrupación puede ser útil para situaciones en las que el efecto de una variable categórica podría no ser simplemente un cambio constante.

  • 01:40:00 En esta sección, el video explica una tarea de serie temporal y muestra cómo modelarla usando un predictor agrupado y un regresor ficticio. Señala que la predicción es buena para la mitad del año, pero se queda corta en los últimos años y se pasa de la raya en el pasado. Para mejorar el modelo, el video sugiere centrarse en los datos más recientes y olvidar los datos anteriores. Introduce el concepto de pesos de muestra, que permite al usuario especificar cuánto pesar un punto de datos en particular. Luego, el video demuestra cómo agregar deterioro al modelo, lo que hace que los puntos de datos recientes importen más que los antiguos. Al hacer esto, el modelo se vuelve más expresivo y funciona mejor con los datos recientes mientras ignora la historia lejana. Sin embargo, este truco puede dar lugar a una situación en la que los datos de entrenamiento tengan un peor rendimiento que los datos de prueba.

  • 01:45:00 En esta sección, el orador presenta una herramienta llamada Human Learn, un proyecto de código abierto diseñado para ofrecer herramientas compatibles con scikit-learn que ayudan a construir y comparar sistemas basados en reglas. El orador explica que, en el pasado, era más común utilizar expertos humanos para crear reglas comerciales y sistemas para la clasificación de datos en lugar de algoritmos de aprendizaje automático. Sin embargo, los modelos de aprendizaje automático no son perfectos y pueden mostrar un comportamiento problemático o ineficaz. El objetivo de Human Learn es construir sistemas basados en reglas que puedan compararse fácilmente con los modelos de aprendizaje automático y, al mismo tiempo, combinarse con ellos. El orador demuestra cómo construir un sistema basado en reglas utilizando el conjunto de datos del Titanic y explica cómo Human Learn puede facilitar la incorporación de estos sistemas en su flujo de trabajo diario.

  • 01:50:00 En esta sección del video, el orador presenta la herramienta FunctionClassifier en scikit-learn que toma una función definida por el usuario y la convierte en un clasificador compatible con scikit-learn. La herramienta también permite la optimización de la búsqueda en cuadrícula de cualquier parámetro definido en la función del usuario. El orador demuestra cómo usar la herramienta FunctionClassifier para realizar una búsqueda de cuadrícula en un parámetro de umbral con un conjunto de datos relacionado con el desastre del Titanic. La flexibilidad de la herramienta permite a los usuarios crear cualquier función de Python con lógica personalizada como modelo clasificador y agregar comportamientos como la detección de valores atípicos.

  • 01:55:00 En esta sección, el instructor explica cómo se pueden manejar los valores atípicos en modelos de aprendizaje automático preexistentes. Al agregar una lógica delante del modelo, se puede identificar un valor atípico y asignarle una etiqueta diferente. El paquete permite que se construyan sistemas basados en reglas utilizando modelos de aprendizaje automático preexistentes, logrando un equilibrio entre la inteligencia natural y la inteligencia artificial. El instructor utiliza el paquete scikit-lego y la función cargar pingüinos para ilustrar la predicción eficiente de la especie de un pingüino en función de sus propiedades. La función usa un gráfico interactivo y el instructor dibuja polígonos alrededor de los puntos de datos que requieren clasificación. A continuación, se utiliza el algoritmo point-in-poly para clasificar los puntos de datos. Un clasificador interactivo permite la definición de un modelo compatible con scikit-learn a partir del blob json. Luego, los conjuntos de datos x e y se pueden generar a partir de un marco de datos, y el modelo se puede usar como cualquier modelo de ciclador.
  • 02:00:00 En esta sección, el ponente enfatiza las propiedades y beneficios de los modelos de aprendizaje automático dibujados. Mediante el uso de una función de gráfico en Matplotlib, demuestra cómo los modelos dibujados predicen clasificaciones para nuevos ejemplos y manejan los datos faltantes de manera efectiva. Además, el ponente muestra cómo el mismo dibujo se puede utilizar como un sistema de detección de valores atípicos comprobando si los puntos están fuera de los polígonos. También demuestra cómo se puede usar la mecánica de dibujo para asignar etiquetas a puntos de datos, incluso cuando las etiquetas no están disponibles, lo que lo convierte en un paso de preprocesamiento útil.

  • 02:05:00 En esta sección, el orador analiza la API de gráficos interactivos, que es relativamente experimental y puede actuar como un transformador de aprendizaje de scikit o en una canalización de pandas para agregar dos nuevas columnas con recuentos relacionados con la aparición del punto de datos en un polígono. El orador recomienda usar algoritmos de aprendizaje automático junto con reglas comerciales para crear sistemas basados en reglas. Además, el orador sugiere varios recursos, como freeCodeCamp, el canal de YouTube de datos pi y la página de documentación de scikit-learn para obtener más información sobre el aprendizaje automático y scikit-learn.
 

PyTorch para aprendizaje profundo y aprendizaje automático: curso completo (partes 1 a 2)


PyTorch para aprendizaje profundo y aprendizaje automático: curso completo

00:00:00 - 01:00:00 El instructor del curso en línea "PyTorch para aprendizaje profundo y aprendizaje automático", Daniel Bourke, presenta a los espectadores el curso, que se centra en la implementación de conceptos de aprendizaje automático en PyTorch, utilizando código Python. Los temas clave cubiertos en el curso incluyen transferencia de aprendizaje, implementación de modelos y seguimiento de experimentos. El video proporciona una introducción al aprendizaje automático y al aprendizaje profundo, y sus diferencias, siendo el aprendizaje profundo mejor para problemas complejos que requieren grandes cantidades de datos y brinda información sobre datos no estructurados. Se explica la anatomía de una red neuronal y el curso cubre los diferentes paradigmas del aprendizaje automático, como el aprendizaje supervisado y el aprendizaje por transferencia. Además, el video explora las aplicaciones potenciales del aprendizaje profundo, particularmente en la detección de objetos y el procesamiento del lenguaje natural. Finalmente, se explican los beneficios de PyTorch, como la estandarización de metodologías de investigación y la habilitación de la ejecución de código de aprendizaje automático en GPU para la extracción eficiente de cálculos numéricos.

01:00:00 - 02:00:00 Esta parte cubre los conceptos básicos de PyTorch, el preprocesamiento de datos, la creación y el uso de modelos de aprendizaje profundo preentrenados, la adaptación de un modelo a un conjunto de datos, la realización de predicciones y la evaluación de las predicciones del modelo. El instructor enfatiza la importancia de la experimentación, la visualización y la formulación de preguntas, así como el uso de los recursos del curso, incluidos GitHub, debates y learnpytorch.io. A los alumnos también se les presenta Google Colab, que brinda la capacidad de usar la aceleración de GPU o TPU para un tiempo de cómputo más rápido, PyTorch preinstalado y otros paquetes de ciencia de datos. El curso profundiza en los tensores como componentes fundamentales del aprendizaje profundo y demuestra cómo crear tensores con diferentes dimensiones y formas, incluidos tensores escalares, vectoriales y matriciales. El curso también cubre la creación de tensores aleatorios, tensores de ceros y unos, y cómo especificar tipos de datos, dispositivos y parámetros de graduación necesarios al crear tensores.

02:00:00 - 03:00:00 En este tutorial de PyTorch, el instructor cubre varios aspectos de las operaciones de tensor, incluida la resolución de problemas, la manipulación, la multiplicación de matrices, la transposición y la agregación. Explican la importancia de mantener la forma del tensor y el tipo de datos correctos cuando se trabaja con modelos de aprendizaje profundo y demuestran cómo verificar y cambiar estos parámetros mediante los comandos de PyTorch. El tutorial incluye desafíos para los espectadores, como practicar la multiplicación de matrices y encontrar el mínimo y el máximo de posición de los tensores, y brinda consejos útiles para evitar errores de forma comunes y mejorar el rendimiento, como usar la vectorización en lugar de bucles for. Además, el instructor presenta varias funciones útiles de PyTorch para remodelar, apilar, comprimir y descomprimir tensores.

03:00:00 - 04:00:00 Esta parte cubre varios temas relacionados con PyTorch, incluidos los métodos de manipulación de tensores como reformar, ver, apilar, apretar, descomprimir y permutar. El instructor proporciona ejemplos de código, enfatiza la importancia de la manipulación de la forma del tensor en el aprendizaje automático y el aprendizaje profundo, y desafía a los espectadores a intentar indexar los tensores para devolver valores específicos. El curso también cubre la conversión de datos entre tensores PyTorch y matrices NumPy y los tipos de datos predeterminados de cada uno, así como el concepto de reproducibilidad en redes neuronales y el uso de semillas aleatorias para reducir la aleatoriedad en los experimentos. El instructor explica cómo acceder a las GPU para realizar cálculos más rápidos y brinda opciones como Google Colab, Colab Pro, usar su propia GPU o usar servicios de computación en la nube como GCP, AWS o Azure.

04:00:00 - 05:00:00 Esta parte cubre una amplia gama de temas para principiantes, incluido cómo configurar el acceso a la GPU con PyTorch, usar el módulo nn en PyTorch, crear modelos de regresión lineal y más. El instructor enfatiza la importancia del código agnóstico del dispositivo para ejecutarse en diferentes dispositivos y tener en cuenta el tipo de dispositivo en el que se almacenan los tensores y los modelos. El curso también incluye ejercicios y un plan de estudios adicional para practicar lo aprendido, y el instructor brinda consejos sobre cómo abordar los ejercicios en Colab. El curso cubre el entrenamiento y la evaluación de modelos de aprendizaje automático, la división de datos en conjuntos de entrenamiento y prueba para la generalización y la visualización de datos. El instructor explica cómo crear un modelo de regresión lineal usando PyTorch puro, lo que implica crear un constructor con la función init, crear un parámetro de pesos usando nn.parameter y configurarlo en parámetros aleatorios usando torch.rand.

05:00:00 - 06:00:00 Esta parte cubre temas como la creación de un modelo de regresión lineal con PyTorch, la implementación de algoritmos de optimización como el descenso de gradiente y la retropropagación a través de PyTorch, y la comprensión de cómo probar el poder predictivo de un modelo de PyTorch. También se analiza la importancia de usar el administrador de contexto torch.inference_mode al hacer predicciones, inicializar parámetros del modelo, usar funciones de pérdida para medir la precisión de las predicciones de un modelo y optimizar los parámetros del modelo para mejorar la precisión del modelo. Además, se presentan módulos fundamentales en PyTorch, incluidos torch.nn, torch.nn.module, torch.optim y torch.utils.dataset.

06:00:00 - 07:00:00 Esta parte cubre varios aspectos de PyTorch y el aprendizaje automático. Una sección se centró en los pasos necesarios para crear un bucle de entrenamiento en PyTorch, incluido el bucle a través de los datos, la pérdida de cálculo y la propagación hacia atrás. El instructor enfatizó la importancia de elegir la función de pérdida y el optimizador adecuados e introdujo el concepto de descenso de gradiente. Otra sección discutió el optimizador y la tasa de aprendizaje, y cómo impactan los parámetros del modelo. El video también enfatizó la importancia de las pruebas y proporcionó una descripción general de la creación de predicciones de prueba y el cálculo de la pérdida de prueba. El curso proporciona recursos adicionales para aquellos interesados en los antecedentes matemáticos de la retropropagación y el descenso de gradiente.

07:00:00 - 08:00:00 Esta parte cubre varios temas relacionados con PyTorch. El curso analiza la importancia de seguir el progreso de un modelo manteniendo un registro de los valores de pérdida y trazando las curvas de pérdida, que deberían mostrar una tendencia decreciente. El instructor también explica los métodos para guardar y cargar modelos de PyTorch, que incluyen guardar un diccionario de estado, cargar el modelo usando el método torch.nn.module.loadStateDict o el método torch.load y probar el modelo cargado. En secciones posteriores, el curso cubre la creación de modelos de regresión lineal y el uso de modelos preexistentes en PyTorch, como la capa lineal, mediante la subclasificación de nn.module.

08:00:00 - 09:00:00 La parte cubre una amplia gama de temas en el ámbito del aprendizaje profundo y el aprendizaje automático. La primera sección cubre las diferentes capas disponibles en torch.nn, implementaciones preconstruidas de estas capas y cómo entrenar modelos de PyTorch usando funciones de optimización y pérdida. En secciones posteriores, el instructor explica la importancia del código agnóstico del dispositivo, guardar y cargar modelos PyTorch y cómo abordar los problemas de clasificación. El instructor brinda ejemplos y enfatiza la importancia de la codificación numérica para las entradas, la creación de datos personalizados y las complejidades de diseño involucradas en un modelo de clasificación, como la cantidad de capas ocultas, neuronas, función de pérdida y optimizador. Finalmente, el instructor enfatiza que comenzar cualquier problema de aprendizaje automático con datos es el paso más importante.

09:00:00 - 10:00:00 Esta parte proporciona una descripción general de cómo crear y entrenar una red neuronal usando PyTorch para la clasificación binaria. El video cubre una amplia gama de temas, incluida la creación de un conjunto de datos personalizado, la verificación de formas de entrada y salida, la preparación de datos para el entrenamiento, la creación y el envío de un modelo a una GPU, la selección de una función de optimización y pérdida para un modelo y la realización de predicciones. El curso incluye demostraciones prácticas de estos conceptos y tiene como objetivo proporcionar una comprensión integral del uso de PyTorch para proyectos de aprendizaje automático.

10:00:00 - 11:00:00 Esta parte cubre varios temas, incluidas las funciones de pérdida, optimizadores, funciones de activación, bucle de entrenamiento y métricas de evaluación. El instructor explica cómo configurar la función de pérdida y el optimizador, crear una función de precisión y convertir logits sin procesar en probabilidades y etiquetas de predicción. El curso también revisa la diferencia entre pérdida BCE y BCE con pérdida logits, y cómo calcular la pérdida de prueba y la precisión para un modelo de clasificación. Además, el instructor brinda sugerencias para mejorar el rendimiento de un modelo, como aumentar la profundidad de la red neuronal, ajustar los hiperparámetros e importar y usar funciones auxiliares de secuencias de comandos externas de Python.

11:00:00 - 12:00:00 En esta parte, el instructor explica cómo mejorar un modelo cambiando hiperparámetros como el número de unidades ocultas, el número de capas y el número de épocas, y destaca la importancia de las pruebas. cambia uno a la vez para identificar mejoras o degradaciones. También analizan las diferencias entre parámetros e hiperparámetros y por qué es importante hacer esta distinción. Además, el instructor cubre las técnicas de resolución de problemas cuando un modelo no funciona y presenta la importancia de la no linealidad en los modelos de aprendizaje automático y aprendizaje profundo. El instructor demuestra estos conceptos con varios ejemplos, incluidos problemas de regresión lineal y no lineal, y muestra cómo entrenar y evaluar modelos mientras prueba diferentes hiperparámetros y funciones de pérdida.

12:00:00 - 13:00:00 Este curso de PyTorch para aprendizaje profundo y aprendizaje automático cubre los conceptos básicos y avanzados de PyTorch para la creación de modelos. El instructor introduce el concepto de no linealidad y demuestra cómo construir modelos de clasificación utilizando la no linealidad con PyTorch. También analizan los optimizadores de construcción, las funciones de pérdida y las funciones de activación personalizadas. Se enfatiza la importancia de combinar funciones lineales y no lineales para encontrar patrones en los datos apilando capas de estas funciones para crear un modelo. El curso cubre modelos de clasificación tanto binarios como multiclase y explica cómo configurarlos en PyTorch. La sección concluye demostrando cómo inicializar modelos de clasificación de clases múltiples con características de entrada y características de salida.

13:00:00 - 14:00:00 El instructor de esta parte analiza la creación de un modelo de pila de capas lineales mediante el método nn.Sequential de PyTorch para realizar una clasificación de varias clases. Explican la creación de la función de pérdida y el optimizador utilizando pérdida de entropía cruzada y descenso de gradiente estocástico (SGD). El instructor también analiza las capas de abandono y la importancia de solucionar problemas de código de aprendizaje automático para resolver errores. Demuestran la evaluación del modelo entrenado usando varios métodos de evaluación de clasificación, como exactitud, precisión, recuperación, puntaje F1, matriz de confusión e informe de clasificación usando torchmetrics y bibliotecas scikit-learn. Finalmente, el instructor muestra cómo importar y usar funciones de métricas preconstruidas en PyTorch usando el paquete torchmetrics y proporciona enlaces al módulo de torchmetrics y artículos extracurriculares para una mayor exploración.

14:00:00 - 15:00:00 Esta parte cubre varios temas relacionados con PyTorch y la visión artificial mediante el aprendizaje automático. Esto incluye comprender los problemas de visión por computadora, como problemas de clasificación binaria o de clases múltiples, y aprender cómo un modelo de aprendizaje automático aprende patrones a partir de varios ejemplos de imágenes. El video también explica las bibliotecas de PyTorch, como TorchVision, y cómo contiene conjuntos de datos, modelos previamente entrenados y transformaciones para manipular datos de visión en números utilizables por modelos de aprendizaje automático. Además, el instructor cubre las formas de entrada y salida del conjunto de datos de FashionMNIST, la importancia de visualizar y explorar conjuntos de datos para identificar problemas potenciales y brinda demostraciones sobre cómo trazar y visualizar datos de imágenes usando PyTorch y Matplotlib.

15:00:00 - 16:00:00 Este curso en video sobre PyTorch para aprendizaje profundo y aprendizaje automático cubre la importancia de preparar datos y usar conjuntos de datos y cargadores de datos de PyTorch. Se enfatiza el concepto de mini-lotes en el aprendizaje profundo, y se explica el proceso de creación de cargadores de datos de entrenamiento y prueba usando PyTorch, con el hiperparámetro de tamaño de lote establecido en 32. Se discute la importancia de visualizar imágenes en un lote, y el concepto de aplanamiento se introduce para transformar datos multidimensionales en un solo vector para usar en un modelo PyTorch. Se cubre el proceso de creación de un modelo de red neuronal simple con una capa plana y dos capas lineales, y se explica el concepto de usar funciones auxiliares en proyectos de aprendizaje automático de Python. Finalmente, se demuestra la importancia de las funciones de temporización para medir cuánto tarda un modelo en entrenarse y el uso de TQDM para una barra de progreso.

16:00:00 - 17:00:00 Esta parte del curso cubre varios temas relacionados con PyTorch, comenzando con la configuración de los ciclos de entrenamiento y prueba, la resolución de errores comunes, la evaluación de modelos y la realización de predicciones. El instructor enfatiza la importancia de la experimentación para encontrar el mejor modelo de red neuronal para un conjunto de datos dado y analiza los beneficios de la no linealidad para modelar datos no lineales. También demuestran cómo crear funciones auxiliares en PyTorch, optimizar y evaluar bucles y realizar pasos de capacitación y prueba. El curso explora aún más el código agnóstico del dispositivo y las ventajas de entrenar modelos en CPU y GPU, y concluye con una demostración de cómo medir el tiempo de entrenamiento en ambos dispositivos.

17:00:00 - 18:00:00 Esta parte cubre muchos temas de aprendizaje profundo y aprendizaje automático. El instructor demuestra cómo crear y probar un modelo de aprendizaje profundo, construir una red neuronal convolucional (CNN) usando PyTorch y crear bloques en PyTorch. Además, el tutorial repasa la composición de un modelo de PyTorch y cómo funcionan las circunvoluciones en la práctica, los cambios en los valores de zancada y relleno en una capa convolucional y las capas convolucional y de agrupación máxima en PyTorch. A lo largo del video, el instructor comparte recursos, proporciona código PyTorch y explicaciones paso a paso, y ofrece orientación sobre cómo crear código eficiente y reutilizable.

19:00:00 - 20:00:00 Esta parte cubre varios temas, como la visualización de predicciones del modelo de aprendizaje automático, la evaluación de un modelo de clasificación de varias clases mediante la matriz de confusión en PyTorch, la instalación y actualización de paquetes en Google Colab, el guardado y la carga de un PyTorch modelo y trabajar con conjuntos de datos personalizados. El curso también demuestra el proceso de construcción de un modelo de visión artificial utilizando PyTorch. El instructor enfatiza la importancia de utilizar bibliotecas de dominio para funciones de carga de datos y funciones de carga de datos personalizables y proporciona ejemplos para varias categorías como visión, texto, audio y recomendación. También brindan recursos útiles, como el sitio web learn pytorch.io y el repositorio de aprendizaje profundo PyTorch.

20:00:00 - 21:00:00 El instructor de este curso de PyTorch para aprendizaje profundo y aprendizaje automático comienza presentando el conjunto de datos Food 101, pero proporciona un subconjunto más pequeño con tres categorías de alimentos y solo el 10 % de las imágenes como práctica con PyTorch. El instructor enfatiza la importancia de tener un directorio separado para los datos y luego muestra cómo abrir, visualizar y transformar imágenes utilizando los métodos Pillow y PyTorch de la biblioteca de imágenes de Python. La sección también cubre las transformaciones de datos con PyTorch, como cambiar el tamaño y voltear imágenes, y el instructor demuestra cómo cargar y transformar imágenes como tensores para modelos de aprendizaje automático con PyTorch. La sección finaliza con una sugerencia para explorar las diversas opciones de transformación de imágenes disponibles en PyTorch.

21:00:00 - 22:00:00 En este curso de PyTorch, el instructor explica cómo cargar y transformar datos de imágenes en tensores, crear y personalizar cargadores de datos para capacitación y pruebas, y crear una clase de carga de datos personalizada. Demuestran la funcionalidad de la función de conjuntos de datos preconstruidos, carpeta de imágenes, que se puede usar para personalizar transformaciones para todas las imágenes. También recorren los pasos necesarios para crear un cargador de datos personalizado, incluida la creación de una función para obtener nombres de clases y asignaciones de directorios, la subclasificación de torch.utils.data.Dataset y la sobrescritura de los métodos get item y len. Si bien las capacidades de personalización de los cargadores de datos son útiles, existe el riesgo de escribir código con errores.

22:00:00 - 23:00:00 Esta parte del curso cubre cómo crear y utilizar conjuntos de datos personalizados y cargadores personalizados en PyTorch, así como también cómo implementar técnicas de aumento de datos. El instructor demuestra cómo construir una red neuronal convolucional utilizando la biblioteca PyTorch y brinda consejos sobre áreas para experimentar, incluidos hiperparámetros como el tamaño del núcleo y la zancada. El curso también cubre cómo probar la tubería de aumento y aprovechar las técnicas de aumento triviales para mejorar la precisión del modelo. Las conclusiones del curso incluyen la flexibilidad de PyTorch y la capacidad de heredar de la clase de conjunto de datos base para crear funciones de carga de conjuntos de datos personalizados.

23:00:00 - 24:00:00 El instructor cubre varios aspectos de PyTorch para el aprendizaje profundo y el aprendizaje automático, incluida la resolución de errores de forma en los modelos, el uso de Torch Info para imprimir resúmenes de los modelos de PyTorch, la creación de funciones de paso de prueba y entrenamiento para evaluar rendimiento en conjuntos de datos y combinar estas funciones en una función de tren para facilitar el entrenamiento del modelo. El instructor también analiza la sincronización del proceso de capacitación de un modelo de aprendizaje profundo, el trazado de curvas de pérdida para rastrear el progreso del modelo a lo largo del tiempo y la evaluación del rendimiento del modelo experimentando con diferentes configuraciones, como agregar capas o ajustar la tasa de aprendizaje. En última instancia, estas habilidades proporcionarán una base sólida para construir y evaluar modelos avanzados usando PyTorch.

24:00:00 - 25:00:00 En esta sección del curso PyTorch para aprendizaje profundo y aprendizaje automático, el instructor analiza los conceptos de sobreajuste y desajuste en los modelos, junto con formas de manejarlos, como el aumento de datos, detención anticipada y simplificación del modelo. Hacen hincapié en la importancia de evaluar el rendimiento del modelo a lo largo del tiempo utilizando curvas de pérdida y proporcionan herramientas para comparar el rendimiento de diferentes modelos. La sección también cubre cómo preparar imágenes personalizadas para la predicción y demuestra cómo cargar una imagen en PyTorch usando torch vision.io y convertirla en un tensor. El instructor señala que antes de pasar la imagen a través de un modelo, es posible que deba cambiar su tamaño, convertirla a float32 y colocarla en el dispositivo correcto.

25:00:00 - 26:35:00 Esta parte del curso de PyTorch cubre varios temas, como tipos de datos y formas, transformación de datos de imágenes usando el paquete de transformación de PyTorch y hacer predicciones sobre datos personalizados usando un modelo previamente entrenado. Para garantizar que los datos estén en el formato correcto antes de enviarlos al modelo, es importante preprocesarlos, escalarlos para que estén entre 0 y 1, transformarlos si es necesario y verificar que tengan el dispositivo, el tipo de datos y la forma correctos. . El instructor también alienta a los alumnos a practicar haciendo los ejercicios de conjuntos de datos personalizados de PyTorch y ofrece soluciones como referencias. El instructor también menciona que hay cinco capítulos adicionales para explorar en learnpytorch.io, que cubren temas como el aprendizaje por transferencia, el seguimiento de experimentos del modelo pytorch, la replicación en papel pytorch y la implementación del modelo pytorch.


Parte 1

  • 00:00:00 En esta sección del video, el instructor, Daniel Bourke, presenta a los espectadores el curso de PyTorch y establece las expectativas para el video tutorial para principiantes. El enfoque del curso será la implementación de conceptos de aprendizaje automático en PyTorch, un marco basado en Python, donde los espectadores aprenderán escribiendo código. Bourke menciona que el curso cubrirá temas importantes como el aprendizaje de transferencia, la implementación de modelos y el seguimiento de experimentos, y si los espectadores desean obtener más información sobre PyTorch, hay recursos adicionales disponibles en learn pytorch.io. Finalmente, Bourke define el aprendizaje automático como el proceso de convertir datos en números y encontrar patrones usando algoritmos y matemáticas, y explica que el enfoque del curso es escribir código, pero los espectadores pueden encontrar recursos adicionales si quieren profundizar en las matemáticas. detrás del código.

  • 00:05:00 En esta sección, se explica la diferencia entre la programación tradicional y el aprendizaje automático. La programación tradicional implica escribir reglas para una tarea, mientras que los algoritmos de aprendizaje automático descubren las reglas en función de los datos de entrada y salida. La razón para usar el aprendizaje automático en lugar de la programación tradicional es para problemas complejos en los que se vuelve engorroso escribir todas las reglas manualmente. El aprendizaje automático se puede usar para cualquier cosa siempre que se pueda convertir en números, pero la regla número uno de aprendizaje automático de Google es intentar primero construir un sistema simple basado en reglas antes de pasar al aprendizaje automático.

  • 00:10:00 En esta sección, el instructor analiza para qué es bueno y para qué no es bueno el aprendizaje profundo. El aprendizaje profundo es útil para abordar problemas que requieren largas listas de reglas, manejar entornos en constante cambio y descubrir conocimientos dentro de grandes conjuntos de datos. Sin embargo, el aprendizaje profundo no es ideal para tareas que requieren explicabilidad, ya que los patrones aprendidos por un modelo de aprendizaje profundo generalmente no los pueden interpretar los humanos. Además, si un sistema simple basado en reglas puede resolver el problema en cuestión, puede ser mejor usarlo en lugar del aprendizaje profundo.

  • 00:15:00 En esta sección del curso completo sobre PyTorch para aprendizaje profundo y aprendizaje automático, el instructor compara el aprendizaje automático y el aprendizaje profundo. Las técnicas tradicionales de aprendizaje automático, como las máquinas impulsadas por gradientes como xg boost, son mejores para datos estructurados en filas y columnas. Para datos no estructurados, como lenguaje natural o imágenes, el aprendizaje profundo suele ser una mejor opción. Los modelos de aprendizaje profundo son probabilísticos, lo que significa que apuestan por el resultado, mientras que los sistemas basados en reglas producen resultados predecibles. Además, los modelos de aprendizaje profundo requieren una gran cantidad de datos para producir excelentes resultados, pero existen técnicas para obtener buenos resultados con menos datos.

  • 00:20:00 En esta sección, el instructor explica la diferencia entre datos estructurados y no estructurados y los algoritmos utilizados para cada tipo en aprendizaje automático y aprendizaje profundo. Los datos estructurados funcionan bien con algoritmos poco profundos, como bosques aleatorios y máquinas potenciadas por gradientes, mientras que los datos no estructurados requieren redes neuronales. Luego, el instructor profundiza en los tipos de redes neuronales, como las redes neuronales completamente conectadas, las redes neuronales convolucionales, las redes neuronales recurrentes y los transformadores. El instructor advierte que una vez que se aprenden los componentes básicos de las redes neuronales, los otros estilos de redes neuronales se vuelven más fáciles de entender. La sección termina con el instructor alentando al espectador a investigar y formar su propia definición de redes neuronales antes del siguiente video.

  • 00:25:00 En esta sección del curso PyTorch, el instructor brinda una descripción general de las redes neuronales y su anatomía. Las redes neuronales constan de una capa de entrada, en la que los datos de entrada se convierten en números, varias capas ocultas, que manipulan y aprenden patrones en los datos, y una capa de salida, que genera las representaciones aprendidas. La cantidad de nodos en las capas ocultas se puede personalizar y la red neuronal aprende las representaciones, también llamadas características o pesos, por sí sola. Se pueden usar diferentes tipos de redes neuronales para diferentes problemas, como CNN para imágenes y transformadores para procesamiento de lenguaje natural. Una vez que la red neuronal emite sus representaciones, se pueden convertir a un formato comprensible para los humanos. La anatomía de una red neuronal también se puede personalizar, con un número de capas que va desde unas pocas hasta más de cien.

  • 00:30:00 En esta sección, se explica la anatomía de una red neuronal. Las redes neuronales constan de una capa de entrada, una o más capas ocultas, cada una con muchas neuronas o unidades ocultas, y una capa de salida. Los patrones y conjuntos de datos se transforman en datos numéricos mediante el uso de funciones lineales y no lineales. Los patrones se dibujan usando una combinación de funciones lineales y no lineales para producir el resultado deseado. Se discuten diferentes paradigmas de aprendizaje, incluido el aprendizaje supervisado, donde los datos y las etiquetas se usan juntos, y el aprendizaje no supervisado, donde solo se usan datos. Los algoritmos de aprendizaje autosupervisado utilizan datos para encontrar patrones, mientras que el aprendizaje por transferencia implica el uso de patrones que ya se han aprendido en un modelo diferente.

  • 00:35:00 En esta sección, el instructor analiza los diferentes paradigmas del aprendizaje automático, específicamente el aprendizaje supervisado, el aprendizaje por transferencia y el aprendizaje por refuerzo. Si bien el enfoque estará en el aprendizaje supervisado y el aprendizaje de transferencia en este curso, el instructor alienta a los alumnos a explorar el aprendizaje por refuerzo en su propio tiempo. Además, el instructor brinda ejemplos de cómo se usa el aprendizaje profundo, como sistemas de recomendación, traducción, reconocimiento de voz y visión por computadora. Se enfatiza la versatilidad del aprendizaje automático, ya que cualquier cosa que se pueda convertir en números y programar para encontrar patrones se puede usar en algoritmos de aprendizaje automático.

  • 00:40:00 En esta sección del video, el instructor analiza las posibles aplicaciones del aprendizaje profundo, como la detección de objetos mediante visión artificial para capturar incidentes de atropello y fuga para identificar el automóvil del culpable. El instructor explica el concepto de procesamiento del lenguaje natural y cómo se utiliza en la detección de spam. Luego, el video pasa a cubrir los fundamentos de PyTorch, el marco de aprendizaje profundo de investigación más popular que permite un aprendizaje profundo rápido en Python, acceso a modelos preconstruidos y rendimiento acelerado de GPU. El sitio web de PyTorch se identifica como un recurso necesario para el curso.

  • 00:45:00 En esta sección, el instructor analiza PyTorch, que, según él, es el marco de investigación de aprendizaje profundo más popular. Cita Papers with Code, que realiza un seguimiento de los documentos de aprendizaje automático que tienen código, para demostrar la popularidad de PyTorch, que muestra que el 58 % de los 65 000 documentos que el sitio ha rastreado se implementan con PyTorch. Además, proporciona varias razones de la popularidad de PyTorch, incluido su uso por parte de empresas como Facebook/Meta, Tesla, Microsoft y OpenAI, así como su capacidad para estandarizar metodologías de investigación. El instructor también destaca el tweet de Francois Chale, que elogia a PyTorch como una herramienta que cualquiera puede usar para resolver problemas sin requerir una inversión significativa o un equipo de ingeniería. En general, el instructor concluye que PyTorch es un favorito de investigación con un ecosistema diverso y una alta tasa de adopción entre los pesos pesados de la industria.

  • 00:50:00 En esta sección del curso PyTorch para aprendizaje profundo y aprendizaje automático, el instructor analiza las diversas aplicaciones de PyTorch, como en la agricultura y las plataformas de redes sociales como Facebook y Microsoft. Además, explica cómo PyTorch permite a los usuarios ejecutar código de aprendizaje automático en GPU, que son muy eficientes para realizar cálculos numéricos, especialmente en el procesamiento paralelo. PyTorch aprovecha CUDA para permitir que el código de aprendizaje automático se ejecute en las GPU de NVIDIA y, si bien hay TPU disponibles, las GPU tienden a ser más populares cuando se ejecuta el código de PyTorch. Adicionalmente, deja la pregunta de "¿Qué es un tensor?" a la audiencia a investigar, con la siguiente sección para cubrir el tema en profundidad.

  • 00:55:00 En esta sección, el instructor explica que los tensores son el bloque de construcción fundamental de PyTorch, y podrían ser cualquier cosa que represente números. Los datos de entrada se codifican numéricamente para convertirlos en un tensor, que puede ser una imagen o un millón de imágenes. El tensor de entrada luego se pasa a una red neuronal que lo manipula a través de operaciones matemáticas y genera otro tensor, que luego se vuelve a convertir a un formato comprensible para los humanos. Se enfatiza la razón para usar PyTorch y buscar respuestas a preguntas en línea, así como una introducción a temas específicos que se tratarán en el curso.

Parte 2

  • 01:00:00 En esta sección, el instructor destaca los temas tratados en el curso de PyTorch. El curso comienza con los conceptos básicos de PyTorch, centrándose en tensores y operaciones de tensores, luego avanza hacia el preprocesamiento de datos, la creación y el uso de modelos de aprendizaje profundo preentrenados, la adaptación de un modelo a un conjunto de datos, la realización de predicciones y la evaluación de las predicciones del modelo. El instructor explica el flujo de trabajo, incluida la preparación de los datos, la elección de un modelo preentrenado, la elección de una función de pérdida y un optimizador, la creación de un ciclo de entrenamiento, el ajuste del modelo y la mejora del modelo a través de la experimentación. Por último, el instructor enfatiza la importancia de codificar, explorar y experimentar con el código mientras vincula los recursos extracurriculares para aprender más sobre la teoría detrás del código.

  • 01:05:00 En esta sección, el instructor del curso PyTorch para aprendizaje profundo y aprendizaje automático aconseja a los alumnos abordar el curso con la mente de un científico y un chef. Enfatiza la importancia de la experimentación y la visualización para comprender los datos en el aprendizaje profundo. Además, el instructor alienta a los alumnos a hacer preguntas y hacer los ejercicios proporcionados, así como a compartir su trabajo con otros para ayudar con su propio aprendizaje y el de los demás. Por último, aconseja a los alumnos que eviten pensar demasiado y decir que no pueden aprender, instándolos a evitar que su cerebro se incendie. Finalmente, dirige a los alumnos a los recursos fundamentales necesarios para el curso, incluido un repositorio de GitHub con todos los materiales necesarios.

  • 01:10:00 En esta sección, el orador explica los recursos disponibles para el curso y cómo utilizarlos de manera efectiva. Los materiales del curso, incluido el código y los cuadernos, están disponibles en GitHub, mientras que las preguntas y respuestas del curso se pueden encontrar en la pestaña de discusiones del mismo repositorio. Además, hay un libro en línea disponible en learnpytorch.io. Para preguntas relacionadas con PyTorch que no son específicas del curso, se recomiendan los foros y el sitio web de PyTorch. Luego, el orador presenta Google Colab, que será la herramienta principal utilizada durante el curso, y alienta a los usuarios a codificar accediendo a través de colab.research.google.com.

  • 01:15:00 En esta sección, el instructor explica cómo usar Google Colab para crear un nuevo cuaderno y escribir código PyTorch. Google Colab brinda beneficios como la capacidad de usar la aceleración de GPU o TPU para un tiempo de cómputo más rápido, así como PyTorch preinstalado y otros paquetes comunes de ciencia de datos de Python. El instructor se vincula a un cuaderno de recursos en learnpytorch.io y proporciona un repositorio de GitHub donde los alumnos pueden hacer preguntas relacionadas con el curso. El instructor también menciona que si bien usan la versión paga de Google Colab, la versión gratuita es suficiente para completar el curso.

  • 01:20:00 En esta sección, el video presenta cómo configurar PyTorch usando Google Colab o consultando el documento de configuración para la configuración local. La configuración recomendada para completar el curso es PyTorch 1.10 y CUDA 11.3. El video también sugiere usar un enfoque de ventana dividida para seguir y crear un cuaderno para practicar. El enfoque principal del video es una introducción a los tensores, el bloque de construcción principal para el aprendizaje profundo, que brinda ejemplos de cómo crear un tensor escalar lleno con el número siete y cómo acceder a la documentación de PyTorch para torch.tensor.

  • 01:25:00 En esta sección, el instructor explica los conceptos básicos de los tensores de PyTorch, comenzando con la creación de tensores usando torch.dot.tensor. Alienta a los alumnos a leer detenidamente la documentación de PyTorch para obtener más información sobre la biblioteca. Continuando, el instructor explica los atributos de escalares, vectores y matrices. Aclara que un escalar no tiene dimensiones y es solo un número, mientras que un vector tiene una dimensión, generalmente representada como una magnitud y dirección. Una matriz es el siguiente paso y tiene dos dimensiones representadas por dos pares de corchetes. Explica la diferencia entre dimensión y forma, y cómo encontrar la forma de un vector en términos de sus dimensiones.

  • 01:30:00 En esta sección, el instructor presenta los tensores en PyTorch y explica que son los componentes básicos de las redes neuronales de aprendizaje profundo. El instructor demuestra cómo crear tensores con diferentes dimensiones, que van desde un escalar hasta una matriz y un tensor con tres pares de corchetes. El instructor explica que el número de dimensiones está indicado por el número de pares de corchetes y la forma está determinada por el número de elementos en cada dimensión. Además, el instructor señala que aunque escribir tensores a mano es tedioso, es importante comprender cómo funcionan, ya que PyTorch los usa mucho.

  • 01:35:00 En esta sección, el instructor analiza la importancia de los tensores aleatorios en PyTorch para el aprendizaje automático y el aprendizaje profundo. Comenzar con tensores llenos de números aleatorios y luego ajustarlos para representar mejor los datos es un concepto clave en las redes neuronales. Para crear un tensor aleatorio en PyTorch, el instructor muestra cómo usar la función torch.rand y explica que "tamaño" y "forma" son dos versiones diferentes de lo mismo. También se analiza brevemente la convención de nomenclatura para las variables en el aprendizaje profundo, como escalares y vectores en minúsculas y matrices y tensores en mayúsculas.

  • 01:40:00 En esta sección, el instructor demuestra cómo crear tensores aleatorios usando PyTorch y explica que varios tipos de datos, incluidas las imágenes, se pueden representar en formato de tensor. El instructor explica que PyTorch simplifica el proceso de creación de tensores y, en muchos casos, maneja el proceso entre bastidores. Demuestran cómo crear un tensor aleatorio con una forma similar a la de un tensor de imagen y explican que las imágenes se representan comúnmente como tensores con canales de color, alto y ancho. El instructor enfatiza que casi cualquier tipo de datos se puede representar como un tensor, lo que convierte a PyTorch en una herramienta poderosa para aplicaciones de aprendizaje profundo y aprendizaje automático.

  • 01:45:00 En esta sección, el instructor presenta cómo crear tensores de ceros y unos, y cómo crear un rango de tensores. El tensor de todos los ceros es útil para crear una máscara de tensor, que puede poner a cero ciertas columnas de un tensor. El tensor de todos unos también puede ser útil en algunas situaciones. El instructor explica cómo usar torch.range, pero advierte que puede estar obsoleto en algunas versiones de PyTorch y sugiere usar una función de rango en su lugar.

  • 01:50:00 En esta sección, se explica la funcionalidad PyTorch de crear tensores usando un rango y otros que tienen la misma forma que otro tensor. El rango de tensores se crea usando torch.arange() donde se pueden definir el inicio, la parada y el paso. De manera similar, torch.zeros_like() se usa para crear un tensor de ceros con la misma forma que el tensor de entrada. Luego, la sección presenta tipos de datos de tensor en PyTorch, especificando que el tipo predeterminado es float 32, incluso si no se especifica ninguno.

  • 01:55:00 En esta sección, aprendemos sobre los parámetros importantes al crear tensores en PyTorch, como el tipo de datos, el dispositivo y la graduación requerida. Descubrimos que el tipo de datos se refiere al nivel de precisión en la computación y comúnmente interactúa con tensores de punto flotante de 32 bits y de punto flotante de 16 bits. La precisión simple es de 32 bits y la precisión media es de 16 bits, siendo 32 bits el tipo de tensor predeterminado en PyTorch. La nota sobre los tipos de datos de tensor es esencial, ya que es uno de los tres errores importantes que podemos encontrar al usar PyTorch y el aprendizaje profundo. Los otros dos errores incluyen tensores que no tienen la forma correcta y no están en el dispositivo correcto.
 

PyTorch para aprendizaje profundo y aprendizaje automático: curso completo (descripción de las partes 3 a 7)


PyTorch para aprendizaje profundo y aprendizaje automático: curso completo


parte 3

  • 02:00:00 En esta sección, el instructor analiza la importancia de mantener la forma y el dispositivo correctos cuando se trabaja con tensores en PyTorch. Si los tensores tienen diferentes formas o están ubicados en diferentes dispositivos (CPU o GPU), pueden ocurrir errores. Además, el instructor explica el papel del parámetro "grad" en el seguimiento de gradientes durante los cálculos numéricos. La lección incluye un desafío para que los espectadores creen tensores de diferentes tipos de datos y prueben el impacto de multiplicar tensores de diferentes tipos. El instructor advierte que, si bien es posible que algunas operaciones no generen errores, otras pueden generar problemas con el tipo de datos, especialmente cuando se entrenan grandes redes neuronales.

  • 02:05:00 En esta sección del video, el instructor explica cómo solucionar problemas de operaciones de tensores y garantizar que los tensores tengan el tipo de datos y la forma correctos para usar en modelos de aprendizaje automático. Demuestran cómo verificar el tipo de datos, la forma y el dispositivo de un tensor usando PyTorch, usando los comandos tensor.Dtype, tensor.shape y tensor.device. El instructor también señala que PyTorch puede arrojar errores si los tensores no tienen el tipo de datos o la forma correctos, y muestra cómo cambiar el tipo de datos si es necesario. Por último, comparan los comandos de tamaño y forma y notan que son intercambiables, siendo uno una función y el otro un atributo.

  • 02:10:00 En esta sección, el instructor repasa la manipulación de tensores en PyTorch, específicamente operaciones de tensores como suma, resta, multiplicación, división y multiplicación de matrices. Estas operaciones son importantes para construir redes neuronales, ya que ayudan a resolver los problemas más comunes con la construcción de modelos de aprendizaje profundo. Además, las redes neuronales combinan estas funciones de varias formas para analizar y ajustar los números de un tensor aleatorio para representar un conjunto de datos. El instructor demuestra cómo realizar las operaciones básicas de tensor de suma, multiplicación y multiplicación de matrices usando ejemplos de código de PyTorch.

  • 02:15:00 En esta sección, el instructor cubre las operaciones de tensor utilizando PyTorch e introduce el concepto de multiplicación de matrices. Demuestran cómo realizar multiplicaciones, sumas y restas por elementos utilizando operadores de Python, así como funciones integradas de PyTorch. El instructor lanza un desafío a los espectadores para que busquen y comprendan la multiplicación de matrices antes de sumergirse en ella. Explican que hay dos formas principales de realizar la multiplicación en redes neuronales, la multiplicación por elementos y la matriz, que también se conoce como producto punto. El instructor brinda ejemplos de ambos tipos de multiplicación usando matrices y enfatiza que la multiplicación de matrices es una de las operaciones de tensor más comunes en las redes neuronales.

  • 02:20:00 En esta sección, el instructor explica la diferencia entre la multiplicación por elementos y la multiplicación por productos escalares en PyTorch. Para demostrar el concepto, el instructor pasa por un proceso paso a paso de multiplicar dos matrices, destacando cómo se multiplica y suma cada elemento para obtener el resultado final. A continuación, el instructor muestra cómo realizar una multiplicación inteligente de elementos usando un ejemplo rudimentario, seguido de una multiplicación de matrices usando la función de centro comercial de punto de antorcha. La sección también cubre cómo realizar la multiplicación de matrices utilizando un bucle for y explica la diferencia de rendimiento entre los dos métodos.

  • 02:25:00 En esta sección, el video explica los beneficios de la vectorización sobre los bucles en PyTorch, usando el ejemplo de la multiplicación de matrices. Se muestra que el método de antorcha torch dot matmore es 10 veces más rápido que usar un bucle for para tensores pequeños. Sin embargo, el video advierte que se deben cumplir dos reglas principales para tensores más grandes para evitar errores de forma en la multiplicación de matrices. La primera regla es que las dimensiones internas de los dos tensores deben coincidir.

  • 02:30:00 En esta sección, el instructor explica las reglas de la multiplicación de matrices y cómo evitar errores de forma comunes al multiplicar tensores. La primera regla es que las dimensiones internas de la matriz deben coincidir. Para demostrar esto, el instructor crea un tensor de tamaño 3x2 e intenta multiplicarlo por otro tensor que no tiene las mismas dimensiones internas, lo que genera un error. La segunda regla es que la matriz resultante tenga la forma de las dimensiones exteriores. El instructor da ejemplos de multiplicación de matrices con diferentes formas y dimensiones de tensor, y cómo dan como resultado diferentes formas de matriz. El instructor alienta a los espectadores a usar un sitio web para practicar la multiplicación de matrices como un desafío antes del próximo video.

  • 02:35:00 En esta sección, el instructor analiza los errores de forma en las redes neuronales, que son uno de los errores más comunes en el aprendizaje profundo. Dado que las redes neuronales se componen de varias operaciones de multiplicación de matrices, incluso un pequeño error de forma del tensor puede provocar un error de forma. Luego, el instructor crea dos tensores, el tensor a y el tensor b, e intenta realizar una multiplicación de matrices entre ellos, lo que genera un error de forma. Para corregir este error, el instructor presenta el concepto de transposición, que cambia los ejes o las dimensiones de un tensor dado, y demuestra cómo se puede usar para ajustar la forma de los tensores en el código PyTorch.

  • 02:40:00 En esta sección, el instructor explica el concepto de transposición de tensores y su importancia en la multiplicación de matrices. La transposición reorganiza los elementos de un tensor sin cambiar sus datos subyacentes y se denota con "punto t". El instructor también demuestra cómo funciona una operación de multiplicación de matrices cuando se transpone el tensor b y destaca la importancia de esta operación en las redes neuronales y el aprendizaje profundo. El proceso de transposición de tensores se ilustra visualmente y el instructor proporciona ejemplos de códigos paso a paso para ayudar a los estudiantes a comprender y practicar el concepto.

  • 02:45:00 En esta sección, el instructor explica la multiplicación de matrices usando PyTorch y un sitio web llamado Matrix Multiplication. Creó dos tensores, el tensor ay el tensor b, y demostró que su multiplicación da como resultado un nuevo tensor con una forma de salida específica. Desafía a los espectadores a transponer el tensor a en lugar del tensor b y ver los resultados. Continuando, el instructor cubre la agregación de tensores y muestra cómo encontrar el mínimo, el máximo, la media y la suma de un tensor utilizando los métodos de PyTorch. También explica cómo la agregación de tensores ayuda a reducir la cantidad de elementos en un tensor.

  • 02:50:00 En esta sección del tutorial de PyTorch, el instructor muestra cómo resolver uno de los errores más comunes en PyTorch, que es tener un tipo de datos incorrecto. Lo demuestra creando un tensor del tipo de datos long, que evita el uso de la función de antorcha media. Luego explica cómo convertir el tensor a float 32, que es requerido por la función de media, usando el método x.type(). Además de encontrar el mínimo, el máximo, la media y la suma del tensor, el instructor también establece un desafío para encontrar el mínimo y el máximo posicionales, que se tratarán en el siguiente video.

  • 02:55:00 En esta sección, se explicó el uso de las funciones argmin y argmax en PyTorch para encontrar el mínimo y máximo posicional de un tensor. La función argmin devuelve la posición en el tensor que tiene el valor mínimo, mientras que la función argmax devuelve la posición en el tensor que tiene el valor máximo. Estas funciones son útiles cuando no es necesario definir los valores mínimos o máximos de un tensor, sino solo la posición de esos valores. Además, se introdujeron los conceptos de reformar, apilar, apretar y soltar tensores, que son útiles para gestionar los desajustes de forma en el aprendizaje automático y el aprendizaje profundo.

parte 4

  • 03:00:00 En esta sección, el instructor explica los diferentes métodos de manipulación de tensores en PyTorch, como reformar, ver, apilar, apretar, descomprimir y permutar. Reshape cambia la forma de un tensor de entrada, view devuelve una vista de un tensor con una forma diferente, stacking combina múltiples tensores juntos ya sea vertical u horizontalmente, squeeze elimina todas las dimensiones que son iguales a 1 y unsqueeze agrega una nueva dimensión con un tamaño de 1. Finalmente, permute intercambia las dimensiones de un tensor. El instructor proporciona ejemplos de código para demostrar cada uno de estos métodos y enfatiza cuán importante es la manipulación de la forma del tensor en el aprendizaje automático y el aprendizaje profundo.

  • 03:05:00 En esta sección, el video tutorial explora cómo remodelar y ver los tensores de PyTorch. La remodelación requiere compatibilidad con el tamaño original y se puede realizar utilizando las funciones 'reformar' o 'ver'. Es importante tener en cuenta que 'vista' comparte la misma memoria con el tensor original. Además, la función 'apilar' concatena tensores a lo largo de una nueva dimensión y la dimensión predeterminada es cero. Se recomienda a los usuarios que guarden su trabajo con frecuencia, ya que pueden ocurrir errores al usar Google CoLab o cualquier otra forma de Jupyter Notebooks.

  • 03:10:00 En esta sección, el instructor presenta los conceptos de compresión y descompresión en PyTorch. Para practicar el uso de estos métodos, se anima al espectador a consultar la documentación y probarlos. El instructor demuestra el método de compresión en el que se eliminan las dimensiones individuales de un tensor de destino. Para visualizar los cambios realizados en los tensores durante estas operaciones, el instructor sugiere imprimir cada cambio y verificar el tamaño del tensor. Además, el instructor enfatiza la importancia de practicar estos conceptos varias veces para familiarizarse con ellos.

  • 03:15:00 En esta sección, el instructor explica el concepto de agregar y eliminar dimensiones en los tensores de PyTorch usando los métodos "comprimir" y "descomprimir". Demuestra los efectos de estos métodos agregando y eliminando dimensiones de los tensores e imprimiendo sus formas. El instructor también presenta el método de "permutación", que reorganiza las dimensiones de un tensor objetivo en un orden específico. Brinda un ejemplo de cómo se puede usar la permutación con imágenes y analiza la importancia de convertir los datos en representaciones numéricas en el aprendizaje profundo.

  • 03:20:00 En esta sección, el instructor enseña cómo permutar un tensor reorganizando sus dimensiones usando el método permute() en PyTorch. El ejemplo dado es un tensor de imagen donde la dimensión del canal de color se mueve al primer índice. El instructor explica que un tensor permutado es solo una vista y comparte la misma memoria que el tensor original, demostrado al actualizar un valor en el tensor original y ver el mismo valor copiado en el tensor permutado. La sección también cubre la indexación en PyTorch y cómo es similar a la indexación con NumPy, otra popular biblioteca de computación numérica.

  • 03:25:00 En esta sección, el instructor presenta cómo importar antorcha y muestra cómo crear un rango pequeño y remodelarlo de manera compatible. Luego, el tutorial profundiza en la indexación con tensores y muestra cómo indexar en la primera y segunda dimensión. El tutorial también revela la funcionalidad de usar un punto y coma para seleccionar toda una dimensión de destino. La sección termina con el desafío de reorganizar el código para obtener el número nueve.

  • 03:30:00 En esta sección, el instructor demuestra cómo seleccionar valores específicos de un tensor usando PyTorch. Los ejemplos involucran la selección de elementos de diferentes dimensiones del tensor especificando los valores de índice apropiados. Luego, el instructor desafía a los espectadores a intentar indexar el tensor para devolver valores específicos. En la siguiente sección, el instructor explica cómo interactúan los tensores de PyTorch con la popular biblioteca científica de computación numérica, NumPy. Dado que PyTorch lo requiere, hay una funcionalidad integrada para permitir una fácil transición entre matrices NumPy y tensores PyTorch.

  • 03:35:00 En esta sección, el video explica cómo convertir datos de tensores NumPy a PyTorch y viceversa. Para pasar de NumPy a PyTorch, se usa el método torch.fromNumPy en la matriz NumPy, pero debe tenerse en cuenta que el tipo de datos predeterminado de PyTorch es float32, mientras que el valor predeterminado de NumPy es float64. Por lo tanto, puede ser necesario especificar el tipo de datos al convertir. También es importante tener en cuenta que al cambiar el valor de la matriz NumPy original, no cambia el valor del tensor PyTorch si se creó con el método fromNumPy. Para pasar de PyTorch a NumPy, se puede usar el método torch.tensor.numpy().

  • 03:40:00 En esta sección, el video explica cómo alternar entre PyTorch y NumPy y los tipos de datos predeterminados de cada uno. El tipo de datos predeterminado de PyTorch es float32, mientras que el tipo de datos predeterminado de NumPy es float64, y si cambia el tipo de datos en PyTorch, el tensor NumPy reflejará el tipo de datos original. El video también cubre el concepto de reproducibilidad en redes neuronales y el uso de semillas aleatorias para reducir la aleatoriedad en los experimentos. Al establecer una semilla aleatoria, la aleatoriedad se matiza y la computadora se vuelve más determinista, lo que permite resultados más reproducibles.

  • 03:45:00 En esta sección, el instructor introduce el concepto de aleatoriedad y reproducibilidad en PyTorch. Se crean dos tensores aleatorios usando la función torch.rand, y sus valores se imprimen y comparan. El instructor explica el concepto de semilla aleatoria, que se utiliza para crear aleatoriedad reproducible en PyTorch. El valor inicial aleatorio puede establecerse en un valor numérico de elección, como 42, y luego usarse en varias funciones aleatorias para obtener aleatoriedad con sabor. Es importante tener en cuenta que si se usa la función torch.manual_seed, generalmente solo funciona para un bloque de código en un cuaderno.

  • 03:50:00 En esta sección del video, se enfatiza la importancia de la reproducibilidad en el aprendizaje automático y el aprendizaje profundo, y se explica el concepto de semilla aleatoria. La semilla manual es una forma de darle sabor a la aleatoriedad de los tensores aleatorios de PyTorch y hacerlos reproducibles. El documento de reproducibilidad de PyTorch se recomienda como un gran recurso para aprender sobre la reproducibilidad. La sección también analiza la ejecución de objetos PyTorch en GPU para cálculos más rápidos y cómo obtener acceso a las GPU, incluido el uso de Google Colab para una GPU gratuita, Google Colab Pro para GPU más rápidas y mayor tiempo de ejecución, y Google Colab Pro Plus para ventajas más avanzadas.

  • 03:55:00 En esta sección, el instructor explica diferentes formas de acceder a las GPU para tareas de aprendizaje profundo y aprendizaje automático. Las opciones son usar Google Colab, actualizar a Colab Pro, usar su propia GPU o usar servicios de computación en la nube como GCP, AWS o Azure. El instructor recomienda comenzar con Google Colab, que es fácil y gratuito de usar. Sin embargo, si necesita más recursos o desea realizar experimentos más grandes, es posible que desee actualizar o utilizar su propia GPU o computación en la nube. El instructor también muestra cómo obtener una GPU en Google Colab cambiando el tipo de tiempo de ejecución y comprobando el acceso a la GPU con PyTorch.

Parte 5

  • 04:00:00 En esta sección, el instructor explica cómo verificar el acceso a la GPU con PyTorch y configurar un código independiente del dispositivo. Con el comando "torch.cuda.is_available()", el usuario puede comprobar si PyTorch puede acceder a la GPU. Además, para ejecutar PyTorch, la variable del dispositivo debe configurarse para usar la GPU, si está disponible, o la CPU de forma predeterminada. También es importante configurar un código agnóstico del dispositivo, que permite que PyTorch se ejecute en la CPU o GPU, según lo que esté disponible, configurando "args.device=torch.device('cuda' if torch.cuda.is_available() else 'cpu')" en scripts de Python. El instructor enfatiza que configurar un código agnóstico del dispositivo es una práctica recomendada cuando se trabaja con PyTorch, ya que permite que el código se ejecute en diferentes dispositivos.

  • 04:05:00 En esta sección, el instructor analiza cómo el uso de GPU puede resultar en cálculos más rápidos y ser beneficioso para los modelos de aprendizaje automático que funcionan con cálculos numéricos como operaciones de tensor. Para usar la GPU, es necesario transferir tensores y modelos, y PyTorch facilita hacerlo con el método `to`. El código se puede hacer independiente del dispositivo para que se ejecute independientemente de si hay una GPU disponible o no. De manera similar, los tensores también se pueden mover de regreso a la CPU si es necesario, y el método `cpu()` se puede usar para esto. El instructor enfatiza que los problemas de dispositivos son el tercer error más común en PyTorch y que es una buena práctica tener en cuenta el tipo de dispositivo en el que se almacenan los tensores y los modelos.

  • 04:10:00 En esta sección, el instructor analiza los fundamentos del trabajo con PyTorch en la GPU. Explica cómo cambiar entre CPU y GPU y cómo evitar errores al usar cálculos NumPy con tensores en la GPU. También alienta a los alumnos a practicar lo que han aprendido a través de un conjunto de ejercicios y un plan de estudios adicional disponible en learn.pytorch.io. Los ejercicios se basan en lo que se ha cubierto en las secciones anteriores, y se anima a los alumnos a utilizar la documentación de PyTorch para completarlos. Finalmente, el instructor brinda consejos sobre cómo abordar estos ejercicios en Colab configurando dos pantallas e importando antorcha.

  • 04:15:00 En esta sección, el instructor analiza los ejercicios y el plan de estudios adicional en el curso de PyTorch. Los ejercicios están basados en código e incluyen plantillas para cada uno de los ejercicios. El plan de estudios adicional se basa en la lectura, y el instructor recomienda pasar una hora repasando el tutorial básico de PyTorch, el inicio rápido y las secciones de tensor, además de ver "¿Qué es un tensor?" video. El instructor también describe el flujo de trabajo de PyTorch, que incluye preparar los datos y convertirlos en tensores, elegir o construir un modelo previamente entrenado, seleccionar una función de pérdida y optimizarla, construir un ciclo de entrenamiento, ajustar el modelo, evaluar el modelo, experimentar y mejorando, y guardando y recargando el modelo entrenado. El instructor alienta a los alumnos a seguir el código y la documentación, buscar recursos, volver a intentarlo y hacer preguntas en los foros de PyTorch.

  • 04:20:00 En esta sección del video, el instructor comienza abriendo un nuevo cuaderno en Colab y lo titula "01 PyTorch Workflow". Explica que se centrarán en la codificación conjunta y la creación de un flujo de trabajo integral de PyTorch, lo que implica la preparación y carga de datos, la creación de un modelo de aprendizaje automático en PyTorch, la capacitación del modelo, la evaluación del modelo y el guardado/carga del modelo. . El instructor también menciona que usarán el módulo nn en PyTorch, que contiene todos los componentes básicos de PyTorch para redes neuronales.

  • 04:25:00 En esta sección, el instructor analiza el uso de torch.nn en PyTorch mediante la exploración de los componentes básicos de los gráficos computacionales, que se utilizan en las redes neuronales. La combinación de estos componentes básicos permite a los científicos de datos y a los ingenieros de aprendizaje automático crear varios tipos de redes neuronales. El instructor enfatiza la importancia del primer paso en el flujo de trabajo de PyTorch, que es preparar y cargar datos en una representación numérica para que el modelo aprenda patrones. El tipo de representación numérica utilizada para codificar datos depende del tipo de datos. El segundo paso consiste en construir una red neuronal para aprender los patrones en la representación numérica y luego usar los patrones aprendidos para tareas específicas como el reconocimiento de imágenes o la clasificación de spam.

  • 04:30:00 En esta sección, el instructor presenta el juego de dos partes en el aprendizaje automático, que consiste en convertir datos en representaciones numéricas y construir un modelo para encontrar patrones en esa representación. Luego, el instructor crea datos conocidos utilizando la fórmula de regresión lineal para mostrar este proceso. El peso y el sesgo de la fórmula se utilizan como parámetros que un modelo aprenderá al observar diferentes ejemplos. El código en Python se usa para crear un rango de números, asignar un valor a la variable X y crear una fórmula Y que es igual al peso por X más el sesgo. Se visualizan la longitud y el valor de X e Y, y se muestran los primeros diez valores de X e Y.

  • 04:35:00 En esta sección, el instructor analiza la importancia de dividir los datos en conjuntos de entrenamiento y prueba en el aprendizaje automático. Utiliza la analogía de los cursos y exámenes universitarios para explicar el concepto. El conjunto de capacitación es similar a todos los materiales del curso, el conjunto de validación es como un examen de práctica y el conjunto de prueba es el examen final. El objetivo es lograr la generalización, de modo que el modelo pueda adaptarse a datos no vistos. El instructor enfatiza que dividir los datos correctamente es vital para crear un modelo preciso.

  • 04:40:00 En esta sección del curso completo de PyTorch, el instructor analiza la importancia de la generalización en los modelos de aprendizaje automático y los tres conjuntos de datos comúnmente utilizados en el entrenamiento y las pruebas: conjuntos de entrenamiento, validación y prueba. También explica las divisiones porcentuales comunes que se utilizan para cada uno de estos conjuntos, donde el conjunto de entrenamiento suele tener entre el 60 y el 80 % de los datos y el conjunto de prueba entre el 10 y el 20 %. Luego, el instructor demuestra cómo crear un conjunto de prueba y entrenamiento usando un conjunto de datos de muestra con valores X e Y usando la indexación para seleccionar la cantidad adecuada de muestras para cada división. Finalmente, explica que si bien a menudo hay un caso de uso para un conjunto de validación en conjuntos de datos más complejos, los conjuntos de entrenamiento y prueba son los más utilizados.

  • 04:45:00 En esta sección, el instructor enfatiza la importancia de visualizar datos escribiendo una función llamada "trazar predicciones" que se usará para comparar los datos de entrenamiento y prueba. La función toma X train, Y train, X test, Y test y predicciones como parámetros y luego traza los datos de entrenamiento en azul usando un diagrama de dispersión con la biblioteca matplotlib. Luego, los datos de prueba se trazan en verde usando la misma función de dispersión. La función también verifica si hay predicciones y, de ser así, las traza utilizando también la función de dispersión. Al visualizar los datos, se vuelve más fácil de entender e interpretar.

  • 04:50:00 En esta sección del video, el instructor analiza el proceso de capacitación y evaluación de modelos de aprendizaje automático. Explican que el objetivo es entrenar el modelo en los datos de entrenamiento para predecir con precisión los valores de los datos de prueba. Demuestran esto utilizando un conjunto de datos lineales simples, con los datos de entrenamiento representados en azul y los datos de prueba en verde. Luego, el instructor presenta el concepto de regresión lineal y prepara el escenario para la siguiente sección, donde construirán un modelo PyTorch para la regresión lineal. También brindan algunos consejos para la solución de problemas de Google Colab.

  • 04:55:00 En esta sección del video, aprendemos cómo crear un modelo de regresión lineal utilizando PyTorch puro. El instructor explica que PyTorch está construido sobre el nn.module, que es como los ladrillos de construcción Lego de los modelos PyTorch. Casi todo en PyTorch hereda de nn.module, y los módulos pueden contener otros módulos, lo que facilita la creación de redes neuronales complejas. Luego, el instructor nos guía a través del proceso de creación de un constructor con la función init, creando un parámetro de pesos usando nn.parameter y estableciéndolo en parámetros aleatorios usando torch.rand. El instructor también explica cómo configurar require_grad y dtype.

parte 6

  • 05:00:00 En esta sección, el instructor explica cómo crear un modelo de regresión lineal usando PyTorch. Comienzan creando una clase para el modelo e inicializándola con parámetros para los pesos y el sesgo, que se agregan automáticamente a la lista de parámetros cuando se asignan a un atributo de módulo. Luego crean un método directo para definir el cálculo en el modelo, que se basa en la fórmula de regresión lineal. El objetivo del modelo es actualizar los parámetros aleatorios para representar el patrón de los datos de entrenamiento a través del descenso de gradiente, que es la premisa del aprendizaje automático.

  • 05:05:00 En esta sección, el instructor analiza el proceso de ajuste de valores aleatorios para representar mejor los valores deseados de ponderación y sesgo en los datos, que se logra mediante dos algoritmos principales: gradiente descendente y retropropagación. El uso de 'requiere grad es igual a verdadero' se explica como el seguimiento de los gradientes a través de cálculos realizados con el modelo, empujando el algoritmo en la dirección correcta. Se enfatiza la importancia de la programación orientada a objetos y el papel de PyTorch en la implementación de estos algoritmos, y se sugieren recursos adicionales para ayudar a ganar intuición para el código. El instructor también destaca el hecho de que, si bien el modelo actual trata con conjuntos de datos simples con parámetros conocidos, los conjuntos de datos más complejos a menudo tienen parámetros definidos por módulos de nn para nosotros.

  • 05:10:00 En esta sección, el instructor explica las conclusiones principales de la creación del primer modelo de PyTorch. Cada modelo en PyTorch hereda de nn.modgable y debe anular el método de avance para definir el cálculo que ocurre dentro del modelo. Además, cuando el modelo aprende, actualiza sus pesos y valores de sesgo a través del descenso de gradiente y la propagación hacia atrás utilizando el módulo de graduación torch.auto. El instructor recomienda ver dos videos vinculados en la transcripción para una comprensión completa de este concepto. Además, el instructor presenta algunos elementos esenciales de construcción de modelos de PyTorch, como el módulo torch.nn que contiene todos los componentes básicos necesarios para las redes neuronales.

  • 05:15:00 En esta sección, el instructor explica los módulos fundamentales de PyTorch, incluidos torch.nn, torch.nn.module, torch.optim y torch.utils.dataset. torch.nn.module es la clase base para todos los módulos de red neuronal y requiere que se sobrescriba el método directo, que define lo que sucede en el cálculo directo. Torch.optim contiene algoritmos para optimizar los valores del modelo, que comienza con valores aleatorios y se ajusta para representar mejor los valores ideales. El instructor también menciona la hoja de trucos de PyTorch como un recurso útil para una mayor exploración de la biblioteca.

  • 05:20:00 En esta sección, el instructor agrega algo de color y código al flujo de trabajo de PyTorch y cubre importantes módulos de PyTorch utilizados para crear conjuntos de datos, construir y entrenar modelos, optimizar los parámetros del modelo, evaluar el modelo y mejorar a través de la experimentación. Luego, el instructor muestra cómo verificar el contenido de un modelo de PyTorch mediante la creación de una instancia del modelo de regresión lineal y el uso de parámetros de puntos para ver el tensor de valores. El instructor también establece una semilla aleatoria para crear los parámetros con valores consistentes.

  • 05:25:00 , aprendimos cómo se inicializan los modelos de aprendizaje profundo con valores aleatorios para parámetros de ponderación y sesgo. También aprendimos sobre la importancia de usar valores de semilla aleatorios para la reproducibilidad. La premisa fundamental del aprendizaje profundo es ajustar estos valores aleatorios para que estén lo más cerca posible de los valores ideales a través del descenso de gradiente y la propagación hacia atrás, utilizando datos de entrenamiento. En la siguiente sección, el video cubrirá cómo hacer predicciones con los valores de parámetros aleatorios del modelo.

  • 05:30:00 esta sección, el video explica el proceso de prueba del poder predictivo de un modelo PyTorch. El método directo del modelo toma los datos de entrada X y los pasa a través del modelo para hacer predicciones. El video demuestra cómo probar el poder predictivo del modelo ingresando X test, que consta de 10 variables, y observando la salida Y pred del modelo. El video también aborda un error común que puede ocurrir durante la creación de un modelo de PyTorch y proporciona una solución.

  • 05:35:00 En esta sección, vemos las predicciones del modelo ejecutando los datos de prueba usando el método Ford que se definió anteriormente. Las predicciones parecen estar sorprendentemente lejos de las predicciones ideales. El código también presenta el modo de inferencia de antorcha, que es un administrador de contexto que se usa para deshabilitar el seguimiento de gradiente al hacer predicciones, lo que permite a PyTorch realizar un seguimiento de menos datos y hacer predicciones más rápido. Mientras que torch no grad puede hacer algo similar, el modo de inferencia tiene algunas ventajas sobre no grad, como se explica en la documentación de PyTorch y un hilo de Twitter proporcionado en el video. Por lo tanto, el modo de inferencia es actualmente la forma preferida de hacer inferencia.

  • 05:40:00 En esta sección, el video explica la importancia de usar el administrador de contexto torch.inference_mode al hacer predicciones en PyTorch, ya que garantiza que el modelo esté en modo de inferencia en lugar de modo de entrenamiento. El video también destaca que la inicialización de un modelo con parámetros aleatorios podría tener un rendimiento deficiente y brinda algunas opciones para la inicialización, como usar valores cero o transferir parámetros de otro modelo. Sin embargo, el enfoque principal del video es entrenar un modelo pasando de parámetros desconocidos a parámetros conocidos usando una función de pérdida, que mide qué tan mal se están desempeñando las predicciones del modelo. El video señala que los términos "función de pérdida", "función de costo" y "criterio" a menudo se usan indistintamente en el aprendizaje automático.

  • 05:45:00 En esta sección, el instructor presenta el concepto de función de pérdida, que se utiliza para medir qué tan equivocadas están las predicciones de un modelo en comparación con los resultados ideales. El instructor usa el ejemplo de medir la distancia entre los puntos rojo y verde para explicar cómo se puede calcular una función de pérdida. El video también cubre la importancia de un optimizador, que tiene en cuenta la pérdida de un modelo y ajusta sus parámetros, como los valores de peso y sesgo, para mejorar la función de pérdida. La sección concluye explicando que los principios de una función de pérdida y un optimizador siguen siendo los mismos, ya sea que se trate de modelos con dos parámetros o modelos con millones de parámetros, y que sean modelos de visión artificial o modelos simples como los que predicen puntos en una línea recta.

  • 05:50:00 En esta sección del curso PyTorch para aprendizaje profundo y aprendizaje automático, el instructor explica la importancia de usar un optimizador para empujar los parámetros de un modelo hacia valores que reduzcan la función de pérdida para mejorar la precisión del predicciones PyTorch tiene una funcionalidad integrada para implementar optimizadores y funciones de pérdida, y el instructor se enfoca en la pérdida L1, también conocida como error absoluto medio, que mide la diferencia absoluta entre los valores predichos y reales. El instructor proporciona un gráfico colorido para ilustrar el error absoluto medio y muestra cómo implementar la función de pérdida utilizando el módulo NN de PyTorch. El objetivo de entrenar un modelo será minimizar las distancias entre los valores predichos y reales y, a su vez, minimizar el valor general del error absoluto medio.

  • 05:55:00 En esta sección, el instructor analiza el papel del optimizador en el aprendizaje automático, que trabaja junto con la función de pérdida para ajustar los parámetros del modelo, como el peso y el sesgo, para minimizar la pérdida. PyTorch tiene torch.optim, donde están disponibles varios algoritmos de optimización, como Stochastic Gradient Descent (SGD) y Adam. Ambos ajustan aleatoriamente los parámetros del modelo para minimizar la pérdida, pero se trata de elegir el más apropiado para un problema específico. La mayoría opta por SGD, que comienza con ajustes aleatorios y luego continúa ajustándose en la dirección que minimiza la pérdida hasta que no se pueden realizar más ajustes. El optimizador requiere dos argumentos, params, o qué parámetros debe optimizar el optimizador, y la tasa de aprendizaje (LR), el hiperparámetro más importante para establecer al optimizar.

Parte 7

  • 06:00:00 En esta sección, el instructor explica qué son los parámetros del modelo y los hiperparámetros y su papel en el proceso de aprendizaje profundo. Los parámetros del modelo son valores que establece el modelo, mientras que los hiperparámetros son valores establecidos por el científico de datos o el ingeniero de aprendizaje automático. La tasa de aprendizaje es un hiperparámetro y su valor determina el tamaño del cambio en los parámetros durante la optimización. Una pequeña tasa de aprendizaje da como resultado pequeños cambios, mientras que una gran tasa de aprendizaje da como resultado grandes cambios. El instructor también habla sobre la importancia de elegir la función de pérdida y el optimizador adecuados para el problema específico. Finalmente, el instructor pasa a explicar el proceso de creación de un ciclo de entrenamiento en PyTorch.

  • 06:05:00 En esta sección, el instructor analiza los pasos necesarios para crear un ciclo de entrenamiento y un ciclo de prueba en PyTorch. El primer paso consiste en recorrer los datos varias veces para mejorar las predicciones y minimizar las pérdidas al realizar pases hacia adelante a través del modelo. El instructor explica que el avance es cuando los datos se mueven a través de las funciones de avance del modelo, y la pérdida se calcula comparando las predicciones del modelo con las etiquetas de verdad del terreno. Luego, el instructor presenta el optimizador y explica que el pase hacia atrás calcula los gradientes de cada parámetro con respecto a la pérdida, lo que permite que el optimizador ajuste los parámetros del modelo para mejorar la pérdida a través del descenso de gradiente. El instructor destaca que PyTorch implementa la propagación hacia atrás y las matemáticas del descenso de gradiente, lo que facilita que aquellos con conocimientos matemáticos limitados aprendan sobre el aprendizaje automático.

  • 06:10:00 En esta sección, el instructor presenta el concepto de descenso de gradiente, que se utiliza para optimizar los parámetros del modelo en el aprendizaje automático. Usando el ejemplo de una colina, el instructor explica cómo el modelo debe moverse hacia la dirección donde la pendiente es menos pronunciada para llegar al pie de la colina, lo que representa una pérdida cero. Luego, el instructor pasa a escribir un código para ejecutar el descenso de gradiente, lo que implica establecer el número de épocas y establecer el modelo en modo de entrenamiento usando el parámetro "requiere grad equals true". El instructor también menciona que hay diferentes modos disponibles para los modelos pytorch y alienta a los espectadores a experimentar con diferentes configuraciones.

  • 06:15:00 En esta sección del video, el instructor analiza la implementación del pase hacia adelante para entrenar un modelo PyTorch. El paso hacia adelante implica pasar datos a través de la función de avance del modelo para hacer predicciones, que luego se comparan con los valores de entrenamiento reales mediante la función de pérdida de MAE. También se presenta la funciónOptimizer.zero_grad(), que establece todos los gradientes en cero antes de calcular la pérdida hacia atrás y actualizar los parámetros del modelo mediante el descenso de gradiente. Estos pasos son cruciales para comprender cómo aprende un modelo y se optimizarán y funcionarán aún más en secciones posteriores del curso.

  • 06:20:00 En esta sección, el instructor repasa los cinco pasos principales de un ciclo de entrenamiento en PyTorch, que incluye el paso hacia adelante, el cálculo de la pérdida, la puesta a cero de los gradientes del optimizador, la propagación hacia atrás y el paso del optimizador a través del descenso de gradiente. . El instructor señala que el orden de estos pasos a veces puede ser ambiguo, pero es importante mantener el paso del optimizador después de la propagación hacia atrás. El instructor también explica por qué los gradientes del optimizador deben ponerse a cero en cada iteración para evitar la acumulación en los bucles. El instructor sugiere practicar la escritura de un bucle de entrenamiento para comprender mejor estos pasos y proporciona una canción y recursos adicionales para seguir aprendiendo.

  • 06:25:00 En esta sección del video, el presentador recapitula los pasos en un ciclo de entrenamiento en PyTorch, que implica el paso hacia adelante, el cálculo del valor de pérdida, la puesta a cero de los gradientes del optimizador y la propagación hacia atrás en la función de pérdida. El bucle de entrenamiento ayuda al modelo a aprender patrones en los datos de entrenamiento, mientras que el bucle de prueba evalúa los patrones en datos no vistos. El presentador también explica por qué ponemos a cero los gradientes del optimizador e introduce el concepto de retropropagación, que calcula el gradiente de la función de pérdida.

  • 06:30:00 En esta sección, el instructor explica el concepto de gradientes y curvas de función de pérdida en el aprendizaje profundo de PyTorch. Al establecer 'requiere grad' como verdadero para los parámetros, PyTorch puede rastrear los gradientes de cada parámetro y crear una curva de función de pérdida para todos ellos. El objetivo de la retropropagación y el posterior descenso del gradiente es calcular el punto más bajo de la curva, que representa la pérdida mínima. El instructor explica el concepto de gradientes en el aprendizaje automático y cómo funciona el descenso de gradientes con puntos de paso. Al optimizar la pérdida de gradiente cero hacia atrás, optimizar el paso y requiere graduación, PyTorch hace gran parte de este trabajo detrás de escena, rastreando automáticamente los gradientes y encontrando la parte inferior de la curva.

  • 06:35:00 En esta sección, el instructor analiza el optimizador y la tasa de aprendizaje. El optimizador toma los parámetros del modelo y crea curvas para cada parámetro usando un mecanismo llamado antorcha autograd para el cálculo de gradiente automático para acercarse a la parte inferior de la curva. La tasa de aprendizaje decide qué tan grande o pequeño es el optimizador que cambia los parámetros con cada paso, y se toman pasos más pequeños a medida que nos acercamos a la convergencia. Además, el instructor aborda los cinco pasos involucrados en el entrenamiento de un modelo, que incluyen la inicialización del modelo, la definición del optimizador, la tasa de aprendizaje, el cálculo del paso hacia adelante, la propagación hacia atrás y el paso del optimizador. Finalmente, el instructor menciona que este bucle se puede transformar en una función, lo que ayuda a evitar repeticiones de códigos.

  • 06:40:00 En esta sección de "PyTorch para aprendizaje profundo y aprendizaje automático: curso completo", el instructor enfatiza la importancia de escribir el ciclo de entrenamiento en PyTorch, ya que es la forma en que el modelo aprende patrones y datos. El video también proporciona recursos adicionales sobre retropropagación y gradiente descendente para aquellos interesados en la base matemática. El instructor explica que la elección de la función de pérdida y el optimizador será específica para cada problema y recomienda pérdida MAE y L1 para problemas de regresión y pérdida de entropía cruzada binaria para problemas de clasificación. La sección finaliza con una demostración del ciclo de entrenamiento utilizando un modelo con solo dos parámetros y una sola época.

  • 06:45:00 En esta sección, el instructor continúa entrenando el modelo de aprendizaje automático usando PyTorch y muestra cómo la función de pérdida disminuye a medida que los parámetros del modelo se actualizan mediante un gradiente descendente. El instructor enfatiza que un valor de pérdida más bajo indica un mejor progreso del modelo y que las pequeñas diferencias en los valores debido a la aleatoriedad en el aprendizaje automático no deberían preocupar. Luego, el instructor desafía al espectador a ejecutar el código durante 100 épocas y hacer predicciones para ver qué tan bajo pueden obtener el valor de pérdida. Finalmente, el instructor analiza la importancia de las pruebas y muestra el siguiente video sobre cómo escribir código de prueba.

  • 06:50:00 En esta sección, el instructor analiza la importancia de investigar y aprender nuevos temas utilizando recursos externos como Google y documentación. Animan a los alumnos a intentar ejecutar el código de entrenamiento durante 100 épocas y examinar los valores y predicciones de peso y sesgo. Luego, el instructor continúa explicando el código de prueba y el propósito de la función model.eval(), que desactiva las configuraciones en el modelo que no son necesarias para la prueba, como las capas de norma de abandono y lote. También analizan el propósito de torch.no_grad() y cómo desactiva el seguimiento de gradientes durante las pruebas, ya que no se produce ningún aprendizaje en esa etapa. Finalmente, la sección concluye con la escritura del paso adelante para el modelo en modo de prueba.

  • 06:55:00 En esta sección, el video enseña cómo crear predicciones de prueba y calcular la pérdida de prueba usando el modelo cero en PyTorch. Las predicciones de prueba se realizan sobre el conjunto de datos de prueba, que el modelo nunca antes había visto, al igual que evaluar el conocimiento de uno sobre materiales que nunca antes había visto. El video explica la importancia de no dejar que el modelo vea el conjunto de datos de prueba antes de evaluarlo para evitar obtener malos resultados. El código imprime la pérdida y lo que sucede cada 10 épocas mientras el modelo se entrena durante 100 épocas, y se ve que la pérdida disminuye con cada época. El video también analiza el concepto de precisión del modelo, que puede imprimirse más adelante.
 

PyTorch para aprendizaje profundo y aprendizaje automático: curso completo (descripción de las partes 8 a 10)


PyTorch para aprendizaje profundo y aprendizaje automático: curso completo


parte 8

  • 07:00:00 En esta sección, el instructor revisa el video anterior, en el que entrenaron un modelo e hicieron predicciones sobre un conjunto de datos simple. Luego, desafían al espectador a encontrar formas de mejorar la capacidad del modelo para alinear los puntos rojos predichos con los puntos verdes reales, posiblemente entrenando al modelo durante más tiempo. Luego, el instructor vuelve a ejecutar el código durante 100 épocas más y muestra una mejora significativa en la pérdida de prueba y las predicciones del modelo. El instructor enfatiza que este proceso de entrenamiento y evaluación de modelos es fundamental para el aprendizaje profundo con PyTorch y se utilizará en el resto del curso. También analizan la importancia de realizar un seguimiento del progreso del modelo utilizando una lista vacía para almacenar valores útiles.

  • 07:05:00 En esta sección, el instructor explica por qué es importante realizar un seguimiento de los valores de pérdida y cómo podemos usarlos para monitorear el progreso de nuestro modelo y mejorarlo en futuros experimentos. El fragmento de código presentado agrega el recuento de época, el valor de pérdida actual y el valor de pérdida de prueba actual a diferentes listas para que se puedan trazar más tarde. El instructor demuestra un gráfico de las curvas de pérdida generadas a partir de las listas y explica su importancia. Una curva de pérdida ideal debe comenzar alta y disminuir con el tiempo, lo que representa un valor de pérdida decreciente.

  • 07:10:00 En esta sección, el instructor explica cómo convertir valores de pérdida de PyTorch a NumPy para trazarlos en Matplotlib. Muestra que es necesario convertirlos a NumPy ya que Matplotlib solo funciona con NumPy. También explica cómo realizar un seguimiento de las curvas de pérdida de entrenamiento y pérdida de prueba y menciona que si coinciden estrechamente en algún punto, significa que el modelo está convergiendo y la pérdida se acerca lo más posible a cero. Luego, el instructor recorre el ciclo de prueba y explica que es necesario pasar los datos de prueba a través del modelo, calcular el valor de pérdida de prueba e imprimir lo que sucede durante el entrenamiento para realizar un seguimiento de los valores de lo que está sucediendo. Finalmente, sugiere poner todos estos pasos en una función y proporciona una canción de bucle de optimización de PyTorch no oficial para recordar los pasos.

  • 07:15:00 aprenderá en esta sección: los tres métodos principales para guardar y cargar modelos en PyTorch. El primer método, torch.save, le permite guardar un objeto PyTorch en el formato pickle de Python. El segundo método, torch.load, le permite cargar un objeto PyTorch guardado. Y el tercer método, torch.nn.module.loadStateDict, le permite cargar el diccionario guardado de un modelo o guardar el diccionario de estado, que exploraremos en el siguiente video. Estos métodos son cruciales para guardar y reutilizar modelos, especialmente cuando se trabaja con modelos más grandes o cuando se necesita compartir modelos con otros.

  • 07:20:00 En esta sección, el instructor explica el concepto de diccionarios de estado y su importancia en PyTorch. PyTorch almacena los parámetros importantes de un modelo en un diccionario, llamado diccionario de estado, que contiene el estado del modelo, incluidos los parámetros que se pueden aprender, como pesos y sesgos. El instructor demuestra cómo se puede guardar y cargar el modelo de PyTorch guardando su diccionario de estado mediante los métodos torch.save y torch.load. Además, el instructor ofrece un desafío adicional para que el usuario lea y comprenda los pros y los contras de guardar todo el modelo en lugar de solo el diccionario de estado. Finalmente, el instructor comparte el código PyTorch para guardar el modelo y crear una carpeta llamada modelos.

  • 07:25:00 En esta sección del video, el instructor demuestra cómo guardar un modelo de PyTorch usando el método recomendado para guardar el dictado de estado. El modelo recibe un nombre y la ruta se crea utilizando la biblioteca pathlib. Una vez que la ruta está lista, el dictado de estado del modelo se guarda usando la función torch.save(), donde el primer parámetro es el objeto y el segundo es la ruta donde se guardará el modelo. El instructor muestra cómo se usa el comando LS para verificar si el modelo está guardado en el directorio de modelos. El video también proporciona una guía para descargar el modelo guardado a una máquina local o Google Drive. Además, el instructor alienta al espectador a desafiarse a sí mismo leyendo la documentación y usando la función torch.load() para aprender a cargar un modelo guardado.

  • 07:30:00 En esta sección, el instructor habla sobre cómo cargar un modelo de PyTorch y cómo usar el método de carga de puntos de antorcha. El diccionario de parámetros guardado previamente de la clase de un modelo se cargará como una plataforma de estado, y esta sección muestra cómo crear una nueva instancia de la clase del modelo de regresión lineal y cargar la plataforma de estado guardada en ella. El método de plataforma de estado de carga del módulo torch nn permite cargar el diccionario de estado directamente en la instancia del modelo, mientras que el método de carga de punto de antorcha toma F y lo pasa a la ruta de guardado del modelo donde se guarda la plataforma de estado anterior.

  • 07:35:00 En esta sección, el instructor repasa cómo guardar y cargar un modelo en PyTorch. Prueban el modelo cargado haciendo nuevas predicciones con los datos de prueba y comparándolas con las predicciones del modelo original usando la función equivalente igual a igual. El instructor soluciona los problemas de los modelos que no son equivalentes haciendo un nuevo conjunto de predicciones del modelo y probando la equivalencia nuevamente. Cubren los aspectos principales de guardar y cargar un modelo, pero sugieren consultar los tutoriales para obtener más detalles. El instructor planea reunir todos los pasos cubiertos hasta ahora en los próximos videos.

  • 07:40:00 En esta sección del video, el instructor recorre todo el flujo de trabajo de aprendizaje profundo con PyTorch, incluida la importación de PyTorch, el guardado y la recarga de modelos, y la creación de código independiente del dispositivo, que permite que el código use la GPU si disponible, o la CPU por defecto si no lo está. El instructor alienta a los espectadores a hacer una pausa e intentar recrear el código por su cuenta, al mismo tiempo que ofrece orientación y consejos útiles. El video también cubre cómo crear conjuntos de datos ficticios y trazar puntos de datos, que se usarán para construir un modelo que aprenderá a predecir los puntos verdes de los puntos azules.

  • 07:45:00 En esta sección, el instructor demuestra cómo crear datos usando la fórmula de regresión lineal de y es igual al peso por las características más el sesgo. Explican que los principios de construcción de un modelo para estimar estos valores siguen siendo los mismos, y proceden a crear las características x e y, que se utilizarán para predecir los valores de prueba y entrenamiento. También dividen los datos en conjuntos de entrenamiento y prueba y trazan los datos para visualizar los patrones en los datos.

  • 07:50:00 En esta sección, el instructor presenta el concepto de construir un modelo lineal de PyTorch para los datos ficticios lineales dados. Subclasifican nn.module para crear un modelo de regresión lineal e inicializar los parámetros usando capas. La capa nn.Linear toma entidades como entrada y salida, y aplica una transformación lineal a los datos entrantes utilizando la misma fórmula que el modelo de regresión lineal. Las formas de entrada y salida del modelo dependen de los datos, y el instructor destaca que a lo largo del curso se verán diferentes ejemplos de características de entrada y salida.

  • 07:55:00 En esta sección, el instructor explica cómo usar la capa lineal en PyTorch como una capa preexistente para crear un modelo. La capa lineal es una forma de regresión lineal y es igual a x, una transposición más b, dentro de las características, fuera de las características. Al subclasificar nn.module, podemos crear una capa lineal y anular el método directo para pasar los datos a través de la capa lineal, que realiza el cálculo directo predefinido. El poder de torch.nn de PyTorch es que crea los parámetros para nosotros detrás de escena, y no tenemos que inicializarlos manualmente. Además, el instructor analiza los diferentes nombres de la capa lineal, como transformación lineal, capa de sondeo, capa totalmente conectada, capa densa y flujo intensivo.

parte 9

  • 08:00:00 En esta sección, el instructor analiza las diferentes capas disponibles en torch.nn, incluidas convolucional, agrupación, relleno, normalización, recurrente, transformador, lineal y abandono. PyTorch proporciona implementaciones preconstruidas de estas capas para tareas comunes de aprendizaje profundo. Luego, la sección pasa a entrenar el modelo lineal de PyTorch construido previamente usando funciones de pérdida y optimización. El optimizador optimizará los parámetros de peso y sesgo del modelo para minimizar la función de pérdida, que mide qué tan equivocado está el modelo. El instructor configura la función de pérdida de L1 y el optimizador SGD para esta tarea.

  • 08:05:00 En esta sección del video, el instructor analiza la importancia de elegir una tasa de aprendizaje adecuada para el optimizador, ya que un paso demasiado pequeño o demasiado grande puede afectar negativamente el rendimiento del modelo. También se explican los pasos necesarios para escribir un ciclo de entrenamiento, que incluye realizar un pase hacia adelante, calcular el valor de pérdida, poner a cero el optimizador, realizar la propagación hacia atrás y ajustar los pesos y sesgos. Además, el instructor sugiere usar torch.manual_seed() para garantizar resultados reproducibles y proporciona un código para imprimir la pérdida de entrenamiento y la pérdida de prueba cada 10 épocas.

  • 08:10:00 En esta sección del curso de PyTorch, el instructor explica cómo escribir código agnóstico del dispositivo para datos, enfatizando que tener todos los cálculos en el mismo dispositivo es crucial para evitar errores. El modelo y los datos deben estar en el mismo dispositivo, que puede ser CPU o CUDA. Al colocar los datos de entrenamiento y prueba en el dispositivo de destino mediante el entrenamiento X y el entrenamiento Y, se crea un código agnóstico del dispositivo, que proporciona resultados más precisos al entrenar el modelo. El instructor también explica cómo evaluar el modelo usando State Decked, demostrando que los parámetros estimados están cerca del valor ideal. La sección termina con un desafío para que los usuarios hagan y evalúen predicciones y las representen en los datos originales.

  • 08:15:00 En esta sección, el instructor analiza la importancia de convertir el modelo PyTorch en modo de evaluación y hacer predicciones sobre los datos de prueba que el modelo nunca antes había visto. Traen la función de predicciones de gráficos para visualizar las predicciones del modelo, pero encuentran un error de tipo cuando intentan convertir el tensor de tipo de dispositivo CUDA a NumPy porque Matplotlib funciona con NumPy, no con PyTorch. Resuelven este error usando la CPU de puntos de tensor para copiar primero el tensor en la memoria del host. El instructor también alienta a los espectadores a guardar y cargar su modelo entrenado utilizando el módulo de ruta, lo que demuestran creando un directorio de modelos y configurando la ruta del modelo.

  • 08:20:00 En esta sección, el instructor explica cómo guardar y cargar modelos PyTorch usando el módulo lib de ruta de Python. Primero, se crea una ruta para guardar el modelo con la extensión .PTH para PyTorch. Luego, el diccionario de estado del modelo se guarda con el método de guardado de la antorcha. El instructor señala que ver el mazo de estado de forma explícita puede no ser viable para modelos con muchos parámetros. Para cargar el modelo guardado, el diccionario de estado guardado se carga en una nueva instancia del modelo de regresión lineal V2 usando el método de cubierta de estado de carga y pasando la ruta del archivo del objeto PyTorch guardado. También se analiza el uso de la capa lineal preconstruida de PyTorch y su llamada en el método directo.

  • 08:25:00 En esta sección, el instructor termina verificando que el modelo cargado tenga los mismos parámetros que el modelo guardado evaluándolo usando el modo de inferencia de antorcha. Luego felicitan al usuario por completar el flujo de trabajo de PyTorch desde la creación de un modelo, el entrenamiento y el guardado para reutilizarlo. Luego, el instructor señala que los usuarios pueden encontrar los ejercicios y el plan de estudios adicional en la versión del libro de los materiales del curso en learnpytorch.io. También proporcionan plantillas de cuadernos de ejercicios que están numeradas por sección y se pueden encontrar en el repositorio de GitHub de aprendizaje profundo de PyTorch en extras y ejercicios.

  • 08:30:00 En esta sección, el instructor brinda información sobre cómo completar los ejercicios de flujo de trabajo y encontrar recursos adicionales para el curso de PyTorch. Él enfatiza la importancia de probar los ejercicios por sí mismo antes de buscar soluciones de ejemplo. La sección concluye con un resumen del flujo de trabajo de PyTorch cubierto, que incluye preparar datos, convertirlos en tensores, construir o seleccionar un modelo, elegir una función de pérdida y un optimizador, entrenar el modelo, hacer predicciones y evaluar el modelo. La siguiente sección se centra en la clasificación de redes neuronales con PyTorch, que es uno de los mayores problemas en el aprendizaje automático. El instructor proporciona recursos para obtener ayuda a lo largo del curso, incluida la página de discusiones de GitHub del curso y la documentación de PyTorch. También explica qué son los problemas de clasificación y da ejemplos como predecir si un correo electrónico es spam o no.

  • 08:35:00 En esta sección del curso de PyTorch, el instructor analiza diferentes tipos de problemas de clasificación en el aprendizaje profundo. La clasificación binaria es cuando solo hay dos opciones, como spam o no spam. La clasificación multiclase es cuando hay más de dos opciones, como clasificar una imagen como sushi, bistec o pizza. La clasificación de etiquetas múltiples es cuando un ejemplo puede tener más de una etiqueta, como asignar etiquetas a un artículo de Wikipedia. El instructor proporciona ejemplos del mundo real y explica los conceptos a fondo. También distingue entre clasificación binaria y multiclase con ejemplos de clasificación de imágenes de perros y gatos en un problema de clasificación binaria y clasificación de imágenes de diferentes animales en un problema de clasificación multiclase.

  • 08:40:00 En esta sección, el instructor explica la arquitectura de un modelo de clasificación de redes neuronales y las formas de entrada y salida de un modelo de clasificación. Él enfatiza la importancia de las entradas numéricas para los modelos de aprendizaje automático y explica cómo las entradas numéricas a menudo tienen diferentes formas según los datos. También analiza el proceso de creación de datos personalizados para ajuste y predicción y cubre los pasos involucrados en el modelado para la clasificación de redes neuronales. Además, el instructor explica cómo configurar una función de pérdida y un optimizador para un modelo de clasificación, crear bucles de entrenamiento y evaluación, guardar y cargar modelos, aprovechar la no linealidad y evaluar modelos de clasificación. Concluye proporcionando un ejemplo de cómo representar numéricamente fotos de alimentos y su predicción utilizando un algoritmo de aprendizaje automático.

  • 08:45:00 En esta sección, el instructor del curso PyTorch for Deep Learning & Machine Learning brinda detalles sobre el proceso de codificación numérica y el formato de salida. Las entradas al algoritmo de aprendizaje automático son imágenes codificadas numéricamente, que tienen algunas salidas asociadas en las probabilidades de predicción. El instructor observa que cuanto más cercana a uno es la probabilidad de predicción, más confianza tiene el modelo en su resultado. Este resultado proviene de observar varias muestras y es posible ajustar el algoritmo y los datos para mejorar estas predicciones. Las salidas codificadas deben cambiarse a etiquetas que sean comprensibles para los humanos. Además, el instructor analiza la forma de los tensores, incluido el tamaño del lote, los canales de color y la altura/anchura. Un tamaño de lote de 32 es una práctica común, y la forma puede variar según el problema que se resuelva.

  • 08:50:00 En esta sección, el instructor explica la arquitectura de un modelo de clasificación, que es el esquema de lo que es una red neuronal. La forma de la capa de entrada está determinada por la cantidad de características, que deben codificarse como una representación numérica, y la capa de salida suele ser una probabilidad de predicción para una determinada clase. Hay hiperparámetros como el número de capas ocultas, las neuronas por capa oculta y la forma de la capa de salida que debe decidir el usuario. El instructor también brinda ejemplos de código para crear capas y neuronas usando PyTorch, y señala que las formas variarán según el problema que se resuelva.

  • 08:55:00 En esta sección, el instructor analiza los componentes de un problema de clasificación, incluida la activación de capas ocultas, la activación de salida, la función de pérdida y el optimizador, y brinda ejemplos de cada uno. Luego, el instructor presenta un problema de clasificación de clases múltiples y analiza cómo se puede construir la arquitectura para tener múltiples funciones de salida. Finalmente, el instructor pasa a escribir código usando PyTorch en Google CoLab, y le recuerda a la audiencia que todo el código se guardará en un repositorio de GitHub. El instructor también enfatiza la importancia de comenzar cualquier problema de aprendizaje automático con datos.

parte 10

  • 09:00:00 En esta sección, el video se enfoca en crear un conjunto de datos personalizado usando la biblioteca scikit-learn. El conjunto de datos de hacer círculos se importa y se crean 1000 muestras con algo de ruido agregado para aleatoriedad. Se imprime la longitud de X e Y, lo que indica que hay 1000 muestras de características y etiquetas. Luego se imprimen las primeras cinco muestras de X e Y, mostrando que los datos ya son numéricos y solo tienen dos clases: cero y una para la clasificación binaria. Luego se crea un marco de datos de pandas, con las características etiquetadas como X1 y X2, y se analiza el muestreo aleatorio como un enfoque potencialmente útil para explorar grandes conjuntos de datos.

  • 09:05:00 En esta sección del curso, el instructor explica el conjunto de datos de juguete que se usará para practicar la construcción de una red neuronal en PyTorch para la clasificación binaria. El conjunto de datos se generó utilizando scikit-learn y consta de dos círculos con diferentes colores que representan las dos clases del problema de clasificación binaria. El instructor muestra cómo la visualización de datos puede ayudar a comprender el conjunto de datos y prepararse para construir una red neuronal. También se analizan las formas de entrada y salida del problema, así como la forma de dividir el conjunto de datos en conjuntos de entrenamiento y prueba, que se tratarán en la siguiente sección del curso.

  • 09:10:00 En esta sección, el instructor analiza la importancia de verificar las formas de entrada y salida en el aprendizaje automático, ya que son fuentes comunes de errores. Demuestran cómo ver las formas de entrada y salida de un conjunto de datos utilizando matrices NumPy y convertir los datos en tensores PyTorch. El proceso de convertir datos en tensores y dividirlos en conjuntos de entrenamiento y prueba es un paso crucial en el aprendizaje automático, incluso para conjuntos de datos de juguete como el que se usa en este ejemplo. El instructor muestra cómo importar PyTorch y asegurarse de que la versión que se usa sea 1.10, cómo convertir matrices NumPy en tensores PyTorch y cómo crear conjuntos de entrenamiento y prueba para los datos.

  • 09:15:00 En esta sección, el instructor demuestra cómo convertir datos de matrices NumPy en el tipo de flotador 32 predeterminado de PyTorch usando el comando "torch.float". El no hacerlo puede resultar en errores más adelante. Luego, el instructor muestra cómo dividir los datos en conjuntos de entrenamiento y prueba mediante la división aleatoria, que se realiza mediante la función "train_test_split" de scikit-learn. El ejemplo de código muestra el orden en que deben aparecer las características y las etiquetas al pasarlas a la función. El instructor también explica el uso del parámetro "test_size", donde el valor dado es el porcentaje de datos que se utilizarán como datos de prueba, y el parámetro "random_state" que actúa como una semilla aleatoria.

  • 09:20:00 En esta sección, el video cubre la división de los datos en conjuntos de entrenamiento y prueba mediante el uso de la biblioteca Scikit-learn en PyTorch. La semilla manual de punto de antorcha se configura para garantizar que se utilicen las mismas divisiones aleatorias, asegurándose de que sean las mismas que desea comparar. Al usar la longitud del tren y los conjuntos de prueba, el video explica que tienen 800 y 200 muestras, respectivamente, que componen el conjunto de datos con el que trabajarán. El siguiente paso es crear y elegir un modelo para clasificar los puntos rojos y azules. Para lograr esto, configuraron un código agnóstico que incluye el dispositivo de modo que se ejecute en un acelerador, construyen el modelo, definen la pérdida y usan PyTorch para crear un ciclo de entrenamiento y prueba que se explorará más a fondo en la siguiente sección.

  • 09:25:00 En esta sección, aprenderemos cómo configurar una GPU para PyTorch y crear un código independiente del dispositivo para garantizar que el código se ejecute en una CPU sin problemas. Luego pasamos a construir un modelo subclasificando un nn.Module y seguimos cuatro pasos principales. En primer lugar, creamos un modelo que subclasifica un nn.Module. En segundo lugar, creamos dos capas lineales capaces de manejar las formas de nuestros datos. En tercer lugar, definimos un método de avance que describe el paso hacia adelante del modelo. En cuarto lugar, instanciamos la instancia de nuestra clase de modelo y la enviamos al dispositivo de destino. Aprendemos que nuestro modelo se usará para separar círculos rojos y azules usando una red neuronal.

  • 09:30:00 En esta sección del curso, el instructor analiza cómo definir una capa de red neuronal que sea capaz de manejar entidades de entrada. Continúa explicando que la cantidad de funciones requeridas para cada capa depende del conjunto de datos que se utilice. En este ejemplo, donde X tiene dos características, la primera capa se define como "n-lineal" con n características iguales a dos, mientras que la segunda capa se define con cinco características para ayudar al modelo a aprender más patrones. El instructor también explica que las características internas de la segunda capa deben coincidir con las características externas de la capa anterior para evitar errores de desajuste de forma. Finalmente, define un método de Ford que describe el paso de Ford y devuelve la capa dos (que toma la capa uno y X como entradas).

  • 09:35:00 En esta sección, el instructor explica cómo instanciar una instancia de la clase modelo y enviarla al dispositivo de destino. Muestra cómo crear una red neuronal multicapa simple, que luego demuestra en el área de juegos de TensorFlow usando dos funciones de entrada y pasándolas a una capa oculta con cinco neuronas, que alimenta otra capa que tiene una función de salida. Ajusta la red a algunos datos, y la pérdida de prueba es de aproximadamente el 50 %, lo que significa que si el modelo solo estuviera adivinando al azar, obtendría una pérdida de alrededor de 0,5, porque solo hay dos clases.

  • 09:40:00 En esta sección del video, el instructor usa una herramienta de pizarra llamada Fig Jam para representar visualmente una red neuronal para un problema de clasificación binaria. El instructor explica que en un problema de clasificación binaria, las conjeturas aleatorias le darán un 50 % de precisión. La red neuronal se construye utilizando entradas, unidades ocultas y una capa de salida, y el instructor enfatiza que la forma de las capas debe coincidir. El patio de juegos de TensorFlow se sugiere como una forma divertida de explorar y desafiarse a sí mismo en la construcción de una red neuronal en este tipo de datos. Más adelante, el instructor analiza la replicación de la red neuronal creada anteriormente con incluso menos código utilizando dos capas lineales capaces de manejar las características de entrada y ampliarlas para mejorar el aprendizaje de la red.

  • 09:45:00 En esta sección, el instructor demuestra cómo replicar un modelo de red neuronal utilizando nn.Sequential en PyTorch. Al usar nn.Sequential, el código del modelo se puede simplificar, ya que la mayor parte del código se implementa en segundo plano. El instructor explica que el uso de nn.Sequential para operaciones simples y directas puede ser más eficiente que la creación de subclases, como se demostró en una sección anterior del video. Sin embargo, la subclasificación permite operaciones más complejas, como la creación de pases hacia adelante más complejos. Esta sección destaca la flexibilidad de PyTorch y las diferentes formas de hacer un modelo. El instructor también demuestra pasar datos a través del modelo y analizar el diccionario de estado.

  • 09:50:00 En esta sección, el instructor demuestra cómo PyTorch crea automáticamente parámetros de ponderación y sesgo entre bastidores mientras implementa una red neuronal de dos capas. El instructor destaca el hecho de que el modelo está instanciado con números aleatorios y que PyTorch cambiará estos valores ligeramente durante el proceso de retropropagación y descenso de gradiente para ajustar o representar mejor los datos. El instructor también muestra la complejidad potencial de tener muchas capas con numerosas funciones y cómo hacer un seguimiento de estos valores a mano puede volverse detallado. Finalmente, el instructor continúa haciendo predicciones usando el modelo no entrenado y destaca la importancia de solucionar problemas y visualizar los datos.

  • 09:55:00 En esta sección, el video explica cómo elegir una función de pérdida y un optimizador después de crear un modelo para el aprendizaje profundo. El tipo de función de pérdida y optimizador necesarios generalmente depende de la naturaleza del conjunto de datos en el que se trabaja. Para problemas de regresión, el error absoluto medio o el error cuadrático medio pueden ser apropiados. Mientras tanto, para problemas de clasificación, se podría elegir la entropía cruzada binaria o la entropía cruzada categórica. El video concluye señalando que la función de pérdida ayuda a medir qué tan precisas son las predicciones de un modelo.

 

PyTorch para aprendizaje profundo y aprendizaje automático: curso completo (partes 11 a 15)


PyTorch para aprendizaje profundo y aprendizaje automático: curso completo


parte 11

  • 10:00:00 En esta sección del curso en video, el instructor brinda una descripción general de varias funciones de pérdida y optimizadores que se usan comúnmente en PyTorch para la clasificación de redes neuronales. El instructor explica la pérdida de entropía cruzada binaria, la pérdida de entropía cruzada, el error absoluto medio y el error cuadrático medio, y cuáles se usan normalmente para tareas de regresión versus clasificación. Para las tareas de clasificación binaria, los ejemplos de código proporcionados incluyen torch.nn BCE loss with logits y BCE loss. El video también cubre el concepto de logit en el aprendizaje profundo y explora dos optimizadores de uso común, SGD y Adam. El instructor señala que si bien puede haber otros optimizadores disponibles, seguir con estos dos aún puede lograr buenos resultados en muchos problemas.

  • 10:05:00 En esta sección del video, el orador configura la función de pérdida y el optimizador en PyTorch para el aprendizaje profundo y el aprendizaje automático. La función de pérdida se llama BCE con pérdida de logits, que tiene incorporada la función de activación sigmoidea. El orador explica que si desea obtener más información sobre las funciones de activación en redes neuronales, hay recursos en línea disponibles. El optimizador elegido es el descenso de gradiente estocástico (SGD), con una tasa de aprendizaje de 0,1, y los parámetros se configuran para actualizar los parámetros del modelo con respecto a la pérdida. Finalmente, el hablante crea una métrica de evaluación.

  • 10:10:00 En esta sección, el instructor analiza la importancia de la precisión como métrica de evaluación y demuestra cómo crear una función de precisión utilizando pytorch. La función de precisión compara las predicciones con las etiquetas de verdad del terreno y devuelve el porcentaje de predicciones correctas del número total de muestras. El instructor también brinda una descripción general de los pasos involucrados en un ciclo de entrenamiento de pytorch, incluido el paso hacia adelante, el cálculo de pérdida, el optimizador de cero gradiente, la propagación hacia atrás y el descenso de gradiente. Se enumeran los pasos y se analiza la importancia de cada paso.

  • 10:15:00 En esta sección, el instructor explica cómo pasar de logits sin procesar a probabilidades de predicción y etiquetas de predicción. Los resultados sin procesar del modelo se denominan logits, que se pueden convertir en probabilidades de predicción pasándolos a una función de activación como sigmoid para clasificación binaria y softmax para clasificación multiclase. Luego, las probabilidades de predicción se pueden convertir en etiquetas de predicción redondeándolas para la clasificación binaria o tomando el argmax para la clasificación multiclase. El instructor también explica el concepto de una función de activación como algo separado de una capa y muestra cómo los datos que pasan a través de una capa lineal aplican una transformación lineal a los datos entrantes a través de un producto escalar y un término de sesgo.

  • 10:20:00 En esta sección del video, el instructor explica cómo usar la función de activación sigmoidea para convertir la salida sin procesar de un modelo, llamada logits, en probabilidades de predicción que se pueden usar para la clasificación binaria. El instructor demuestra cómo usar la función sigmoide en los logits del modelo para crear predprobs, que luego se pueden pasar a una función de punto redondo de antorcha para obtener etiquetas de predicción. Estas etiquetas de predicción se utilizan para determinar a qué clase pertenece una entrada, mediante un límite de decisión que suele establecerse en 0,5. El instructor también enfatiza la importancia de realizar este paso en los logits sin procesar para garantizar que las probabilidades de predicción estén en el mismo formato que los datos de prueba.

  • 10:25:00 En esta sección, el video analiza el proceso de convertir logits sin procesar del modelo en probabilidades de predicción mediante una función de activación y luego convertirlos en etiquetas de predicción. Los pasos se demuestran a través de una buena cantidad de código, donde y-pred se crea a partir de sondas y-pred usando el paso completo, incluidas predicciones, logits para sondas pred y etiquetas pred. Las predicciones del modelo se comparan con las etiquetas de prueba y se crea el mismo formato utilizando la función de compresión. El siguiente paso es construir un ciclo de entrenamiento y prueba, lo que implica hacer un pase hacia adelante, calcular la pérdida y optimizar los gradientes. El video alienta al espectador a intentar esto por su cuenta antes de continuar con el siguiente video para obtener más instrucciones.

  • 10:30:00 En esta sección, el instructor establece una semilla manual para reproducibilidad, específicamente una semilla aleatoria CUDA para operaciones en un dispositivo CUDA. Luego pasan a colocar los datos en el dispositivo de destino y construyen el ciclo de capacitación y evaluación. El instructor destaca un pequeño dato en el pase hacia adelante donde se generan logits sin procesar y se deben pasar a través de torch.round y torch.sigmoid para convertirlos en probabilidades de predicción y etiquetas. Por último, calculan la pérdida y la precisión, señalando que aunque no es necesario calcular la precisión, puede ser útil para visualizar diferentes métricas mientras el modelo se está entrenando.

  • 10:35:00 En esta sección, el video analiza la diferencia entre pérdida BCE y BCE con pérdida logits en PyTorch. El BCE con pérdida de logits espera logits como entrada y combina una capa sigmoidea y una pérdida de BCE, lo que lo hace más estable numéricamente. Por otro lado, la pérdida BCE espera probabilidades de predicción como entrada, por lo que se debe llamar a la antorcha sigmoidea en los logit para convertirlos en probabilidades. El video también describe los pasos para el ciclo de optimización de PyTorch, incluida la puesta a cero de los gradientes, la realización de la retropropagación y la actualización de los parámetros para reducir los gradientes. Del mismo modo, al probar o hacer predicciones, el modelo debe ponerse en modo de inferencia y los logits de prueba deben procesarse llamando a la función sigmoidea para adquirir probabilidades de predicción.

  • 10:40:00 En esta sección, el instructor analiza cómo calcular la pérdida de prueba y la precisión para el modelo de clasificación. Para calcular la pérdida de prueba, el instructor usa BCE con la función de pérdida de logits y la compara con las etiquetas de prueba Y. Para calcular la precisión de la prueba, el instructor utiliza la función de precisión en las variables Y true e Y pred. El orden de las variables se invierte para la función de precisión, ya que el instructor se basó en el paquete de métricas de scikit-learn. Finalmente, el instructor imprime el número de época, la pérdida y la precisión del entrenamiento, y la pérdida y la precisión de la prueba cada 10 épocas. El instructor alienta a los usuarios a ejecutar este código gigantesco y corregir cualquier error que surja.

  • 10:45:00 En esta sección, el instructor analiza los resultados del entrenamiento modelo de la sección anterior, que no mostró ninguna mejora significativa en la precisión. El instructor sugiere que la precisión ideal para el modelo debería ser 100 y el valor de pérdida debería ser cero. Sin embargo, la precisión del modelo actual está por debajo del 50 %, lo que equivale a adivinar al azar. Para determinar el motivo del bajo rendimiento, el instructor sugiere visualizar las predicciones realizadas por el modelo. El instructor importa una función llamada "límite de decisión de trazado" desde un archivo de función auxiliar para usar en este proceso de visualización. El instructor también recomienda un recurso, madewithml.com, para aquellos interesados en obtener más información sobre los fundamentos del aprendizaje automático y las operaciones ml.

  • 10:50:00 En esta sección, el instructor explica cómo descargar funciones auxiliares del repositorio de aprendizaje de PyTorch de forma programática utilizando los módulos "pathlib" y "request" de Python. El instructor muestra el proceso de verificar si la ruta de las funciones auxiliares ya existe y, si no existe, se realiza una solicitud para descargar la función auxiliar como un archivo llamado "helper_functions.py". El instructor demuestra la importación exitosa de los métodos "plot_predictions" y "plot_decision_boundary" desde la función auxiliar descargada, que se usará más adelante en el curso. Finalmente, el instructor realiza una prueba para visualizar la función auxiliar mediante la función "plot_decision_boundary", que traza con éxito un límite de decisión para el conjunto de entrenamiento.

  • 10:55:00 En esta sección del video, el presentador analiza las limitaciones de un modelo lineal para separar datos circulares con líneas rectas, como se muestra en una visualización del límite de decisión del modelo. La solución para mejorar la precisión del modelo es agregar más capas, es decir, aumentar la profundidad de la red neuronal, lo que permite más posibilidades de aprender sobre patrones en los datos. Otras formas de mejorar el rendimiento de un modelo incluyen aumentar la cantidad de datos de entrenamiento y ajustar los hiperparámetros, como la tasa de aprendizaje y el tamaño del lote. La importación y el uso de funciones auxiliares desde scripts externos de Python también se mencionan como una práctica común.

parte 12

  • 11:00:00 En esta sección, el instructor analiza formas de mejorar un modelo: agregar más unidades ocultas, ajustar por más tiempo, cambiar las funciones de activación, ajustar la tasa de aprendizaje y cambiar la función de pérdida. El instructor señala que aumentar la cantidad de parámetros en un modelo puede ayudar potencialmente a representar mejor los datos, pero demasiados parámetros pueden hacer que el modelo sea demasiado complejo para un conjunto de datos simple. El instructor también ilustra cómo la experimentación puede ayudar a mejorar el modelo cambiando su estructura e hiperparámetros. Finalmente, el instructor muestra ejemplos gráficos de cómo agregar capas, aumentar la cantidad de unidades ocultas, agregar funciones de activación y cambiar la función de optimización puede mejorar potencialmente el modelo.

  • 11:05:00 En esta sección, el instructor analiza cómo mejorar un modelo desde la perspectiva del modelo. Explica el concepto de hiperparámetros, que son valores que los ingenieros de aprendizaje automático y los científicos de datos pueden cambiar para mejorar los resultados del modelo. El instructor demuestra cómo cambiar los hiperparámetros de un modelo, como el número de unidades ocultas, el número de capas y el número de épocas. También destaca la importancia de probar estos cambios uno a la vez para identificar cuál ofrece la mejora o la degradación. Finalmente, explica la diferencia entre parámetros e hiperparámetros y por qué es importante hacer esta distinción.

  • 11:10:00 En esta sección, el instructor crea un modelo de tres capas con más unidades ocultas para ver si entrenar este modelo durante más tiempo produce mejores resultados. El método directo se anula para pasar datos a través de cada capa, con una unidad oculta adicional y una capa adicional en general. También se demuestra que el método que aprovecha las aceleraciones realiza todas las operaciones a la vez. Se crea una instancia del modelo de tres capas y se envía al dispositivo de destino, seguido de la creación de una función de pérdida y un optimizador, y un ciclo de entrenamiento y evaluación para el modelo uno.

  • 11:15:00 En esta sección, el video continúa desde el anterior en el que se subclasificó el nn.module para crear un nuevo modelo, Circle Model V1, con más unidades ocultas y una capa adicional. Ahora, el siguiente paso en el flujo de trabajo es seleccionar una función de pérdida, y el video usa nn.BCEWithLogitsLoss() como antes, con el mismo optimizador, torch.optin.SGD(). El video establece la tasa de aprendizaje en 0,1, el número de épocas en 1000 y coloca los datos en el dispositivo de destino (CPU o GPU). El video también muestra un ciclo a través de las épocas y pasa los datos de entrenamiento a través del modelo con la nueva arquitectura, calcula la pérdida y actualiza los parámetros usando el autograduado de torch.

  • 11:20:00 En esta sección del video, el instructor repasa los pasos para evaluar la precisión y la pérdida del modelo. La función de pérdida toma los valores de etiqueta predichos y los compara con los valores de etiqueta reales. La función de precisión se utiliza para determinar qué tan precisas son las predicciones del modelo. El optimizador se utiliza para ajustar los parámetros del modelo para crear una mejor representación de los datos. La prueba se realiza llamando al método eval() del modelo y activando el modo de inferencia. Los logits se crean pasando datos de entrada al modelo, y luego las funciones torch.round() y torch.sigmoid() se utilizan para convertirlos en predicciones. La pérdida y la precisión se calculan para los datos de prueba y se imprimen cada 100 épocas durante el entrenamiento del modelo.

  • 11:25:00 En esta sección del curso PyTorch para aprendizaje profundo y aprendizaje automático, el instructor analiza técnicas de solución de problemas para cuando un modelo no funciona, como probar un problema menor para ver si el modelo puede aprender algo. Sugiere replicar el conjunto de datos de una sección anterior donde un modelo lineal pudo ajustarse a una línea recta y usarlo para ver si el modelo actual puede aprender algo, ya que actualmente solo está adivinando y no puede dibujar una línea recta para separar el datos circulares. El instructor también menciona que algunos métodos para mejorar un modelo incluyen cambiar los hiperparámetros, como el número de capas y unidades ocultas, y cambiar las funciones de activación y pérdida.

  • 11:30:00 En esta sección, el instructor crea un conjunto de datos utilizando la fórmula de regresión lineal para ver si el modelo funciona en algún tipo de problema. El conjunto de datos se llama regresión x y contiene 100 muestras de un valor x por valor y. Luego, el instructor crea divisiones de entrenamiento y prueba para los datos y verifica sus longitudes. Finalmente, la función de predicciones de trazado del archivo de funciones auxiliares se usa para inspeccionar visualmente los datos.

  • 11:35:00 En esta sección, el presentador analiza un proyecto paralelo para ver si su modelo puede ajustarse a un conjunto de datos de línea recta antes de intentar ajustar un conjunto de datos de línea no recta. Ajustan el Modelo 1 para que se ajuste al nuevo conjunto de datos cambiando la cantidad de características de entrada de dos a una para que coincida con los datos, mientras mantienen las características de salida en 10 para darle al modelo tantos parámetros como sea posible. También crean el Modelo 2 utilizando NN dot secuencial, que pasa datos a través de capas y configura una función de pérdida y optimización.

  • 11:40:00 En esta sección, el instructor presenta la función de pérdida de L1 para optimizar un problema de regresión y utiliza el optimizador SGD con una tasa de aprendizaje de 0,1 para optimizar los parámetros del modelo. Después de cargar el conjunto de datos y colocarlo en el dispositivo de destino, el modelo se entrena para mil épocas con un bucle. En cada época, se realiza el pase hacia adelante, se calcula la pérdida y se actualizan los parámetros utilizando funciones de retroceso y paso. El progreso del entrenamiento se imprime con la época, la pérdida y la pérdida de prueba cada 100 épocas. La pérdida disminuye a medida que se optimiza el modelo.

  • 11:45:00 En esta sección del video, el instructor resume la sección anterior donde crearon un conjunto de datos de línea recta y entrenaron un modelo para ajustarlo. Confirman que el modelo está aprendiendo algo y sugieren que los alumnos jueguen con diferentes valores de la tasa de aprendizaje para experimentar con modelos de aprendizaje automático. Luego, el instructor continúa explicando cómo activar el modo de evaluación y hacer predicciones, que también se conocen como inferencia. También enseñan cómo usar la función de predicción de gráficos y encuentran un error debido a que los datos no están en el mismo dispositivo que el modelo, que resuelven llamando a la CPU de punto en sus entradas de tensor.

  • 11:50:00 En esta sección, el instructor presenta la importancia de la no linealidad en el aprendizaje automático y los modelos de aprendizaje profundo. Las funciones lineales por sí solas no pueden capturar los patrones complejos en los datos que requieren funciones no lineales como curvas para representarlos con precisión. Las redes neuronales se construyen combinando funciones lineales con funciones no lineales, o activaciones, para modelar patrones de datos complejos. El instructor da pistas sobre los próximos videos que cubrirán las activaciones no lineales y su función en los modelos de aprendizaje profundo.

  • 11:55:00 En esta sección, el instructor analiza el poder de la no linealidad en el aprendizaje automático y las redes neuronales. La no linealidad es esencial en el aprendizaje automático porque los datos no siempre se componen de líneas rectas. Luego, el instructor demuestra cómo crear y trazar datos no lineales usando la función de creación de círculos, y cómo convertir datos a tiempos y entrenar y probar divisiones usando PyTorch y la función de división de prueba de entrenamiento de sklearn.

parte 13

  • 12:00:00 En esta sección, el instructor de un curso de PyTorch para aprendizaje profundo y aprendizaje automático presenta la no linealidad, que es un componente crucial en la creación de un modelo. El instructor desafía al espectador a encontrar una función no lineal específica en el módulo TorchNN, que puede incluir capas de agrupación, capas de relleno y funciones de activación para realizar alguna operación matemática en una entrada. Se proporcionan ejemplos de activaciones no lineales como n dot sigmoid y n dot relu. Luego, el instructor demuestra cómo construir un modelo de clasificación utilizando la no linealidad con PyTorch. La no linealidad significa que el gráfico no es una línea recta, mientras que lineal significa lo contrario.

  • 12:05:00 En esta sección del curso PyTorch para aprendizaje profundo y aprendizaje automático, el instructor presenta el concepto de datos no lineales y cómo las redes neuronales y los modelos de aprendizaje automático pueden trabajar con números en cientos de dimensiones, lo que les facilita manejar datos no lineales. Se crea una nueva red neuronal, el modelo circular V2, usando clases con un constructor y varias capas que realizan operaciones lineales con la adición de una función de activación no lineal llamada "relu". Esta función convierte las entradas negativas del modelo en cero y deja las positivas como están. Luego, el nuevo modelo se pasa a través de la función sigmoidea para determinar la salida.

  • 12:10:00 En esta sección, el instructor desafía a los espectadores a recrear un modelo de red neuronal en TensorFlow Playground con dos capas ocultas y cinco neuronas, utilizando la función de activación de la Unidad lineal rectificada (ReLU) en lugar de la función de activación lineal, que he estado usando. El instructor explica que la función de activación ReLU es una función de activación no lineal popular y efectiva necesaria para modelar datos no lineales, para lo cual están diseñadas las redes neuronales. El instructor demuestra el efecto de cambiar la tasa de aprendizaje en la pérdida de entrenamiento y alienta a los espectadores a experimentar con diferentes tasas de aprendizaje para observar el efecto en la curva de pérdida.

  • 12:15:00 En esta sección, el instructor analiza la creación de un optimizador y una función de pérdida para un problema de clasificación binaria mediante PyTorch. Establecieron la función de activación no lineal del modelo en ReLU y crearon semillas aleatorias para CUDA. Luego recorren 1000 épocas para entrenar el modelo y calcular la pérdida y la precisión utilizando el BCE con función de pérdida logits y una función de precisión respectivamente. El instructor alienta a pensar en cómo funcionalizar el código de capacitación y sugiere que esta sección es para generar experiencia e impulso para trabajar en proyectos de PyTorch del mundo real.

  • 12:20:00 En esta sección, el instructor explica el proceso de optimización del modelo con el método de retropropagación en PyTorch. Antes de realizar la retropropagación, los gradientes del optimizador se ponen a cero para que pueda comenzar desde cero. Después de ejecutar loss.backward(), se llama al método de pasos del optimizador para realizar un descenso de gradiente en los parámetros del modelo. El instructor también demuestra cómo depurar los parámetros del modelo y explica que la función de activación de ReLU no tiene ningún parámetro, lo que la hace efectiva. Finalmente, el instructor imprime la pérdida de entrenamiento y prueba, la precisión y la época para seguir el progreso del aprendizaje del modelo.

  • 12:25:00 En esta sección, el instructor soluciona un problema de forma en el código de PyTorch y lo soluciona usando la función de compresión para eliminar una dimensión adicional en la forma de punto de los logits de prueba. Luego discuten el poder de la no linealidad y cómo la adición de capas relu mejoró el rendimiento del modelo, lo que le permitió trazar una línea para separar los círculos en el conjunto de datos. El instructor también enfatiza la importancia de la visualización para evaluar el modelo y hacer predicciones, y desafía a los espectadores a trazar los límites de decisión.

  • 12:30:00 En esta sección, el instructor demuestra el uso de la función de límite de decisión de trazado para visualizar el rendimiento de un modelo no lineal en comparación con un modelo lineal. Se muestra que el modelo no lineal tiene una mayor precisión que el lineal, pero el instructor desafía al espectador a mejorar aún más la precisión. Luego, el instructor pasa a discutir cómo las redes neuronales usan funciones lineales y no lineales como herramientas para descubrir patrones en los datos, lo que lleva a una demostración de cómo crear tensores y usar funciones de activación no lineales en PyTorch.

  • 12:35:00 En esta sección, el instructor explica cómo crear funciones de activación personalizadas en PyTorch replicando las populares funciones ReLU y Sigmoid. El instructor establece primero un tipo de datos de flotador de antorcha 32 y visualiza una línea recta trazada usando los valores negativos de 10 a 10 en el eje x. Luego, la función ReLU se crea utilizando las funciones torch.relu y nn.relu tomando un tensor de entrada y devolviendo el máximo de cero y x. De manera similar, la función sigmoidea se crea tomando un tensor de entrada y devolviendo uno dividido por uno más la exponencial de x negativa. El instructor demuestra la eficacia de las funciones ReLU y Sigmoid personalizadas al trazarlas y compararlas con las funciones integradas de PyTorch.

  • 12:40:00 En esta sección del curso de PyTorch, el instructor explica la importancia de combinar funciones lineales y no lineales para encontrar patrones en los datos a fin de ajustar un conjunto de datos. La idea detrás de las redes neuronales es apilar capas de estas funciones para crear un modelo. Si bien es posible construir estas capas desde cero, Pytorch ofrece capas preconstruidas que han sido probadas con errores y calculan lo más rápido posible entre bastidores, al mismo tiempo que permiten el uso de GPU. El instructor también analiza la diferencia entre la clasificación binaria, que implica dos resultados posibles, y la clasificación multiclase, que implica más de dos resultados posibles. Finalmente, la sección concluye reiterando la importancia de la no linealidad en las redes neuronales y el instructor lanza un desafío para mejorar su modelo de clasificación binaria anterior.

  • 12:45:00 En esta sección, el instructor del curso presenta la clasificación multiclase y las diferencias entre esta y la clasificación binaria. La función de activación softmax se usa en lugar de la entropía sigmoidea y cruzada en lugar de la entropía cruzada binaria. Luego, el instructor procede a crear un conjunto de datos de 20 clases múltiples utilizando la función de creación de blobs de scikit-learn.datasets para generar cuatro clases con dos funciones cada una. La desviación estándar central se ajusta para dar a los grupos algo de aleatoriedad y sacudirlos un poco, lo que dificulta un poco el modelo.

  • 12:50:00 En esta sección, el extracto de la transcripción analiza cómo preparar datos para un modelo de clasificación de clases múltiples usando PyTorch. Convierten los datos en tensores y usan la función de división de prueba de tren de scikit-learn para dividir los datos en conjuntos de entrenamiento y prueba. También visualizan los datos usando plot.figure y configuran la semilla aleatoria para garantizar la reproducibilidad. Después de crear el conjunto de datos de clasificación de clases múltiples, consideran si se necesita no linealidad para separar los datos y luego proceden a construir un modelo para los datos.

  • 12:55:00 En esta sección, el instructor analiza cómo configurar un modelo de clasificación de varias clases mediante PyTorch. Explica el proceso paso a paso, comenzando con la definición de la forma de la capa de entrada y determinando la cantidad de neuronas por capa oculta. Luego, el instructor explica cómo configurar la forma de la capa de salida, lo que requiere una entidad de salida por clase. Para crear el modelo, el instructor crea una clase llamada "modelo de blob" que hereda de nn.module y establece algunos parámetros para el modelo. Finalmente, el instructor demuestra cómo inicializar el modelo de clasificación de clases múltiples con características de entrada y características de salida.

parte 14

  • 13:00:00 En esta sección, el instructor analiza la creación de un modelo de pila de capas lineales utilizando el método nn.Sequential de PyTorch. Para instanciar el modelo, se accede al número de entidades de entrada y al número de clases de salida para determinar la configuración de las capas ocultas. El instructor configura una pila secuencial de capas para pasar datos a través de cada capa uno por uno. También brindan instrucciones sobre cómo agregar no linealidad al conjunto de datos y luego crean un método directo para permitir que la entrada pase por las capas especificadas de manera secuencial. Finalmente, se crea una instancia del modelo de blob con la cantidad adecuada de características de entrada y salida.

  • 13:05:00 En esta sección del video, el instructor crea un modelo de clasificación de varias clases creando subclases de un nn.Module y configura parámetros para que el constructor de clases personalice las funciones de entrada y salida. También explican que el parámetro de características de salida se alinea con el número de clases en los datos. Para crear una función de pérdida para un modelo de clasificación de clases múltiples, el instructor busca y encuentra la pérdida de entropía cruzada en el módulo torch.nn, que calcula la pérdida entre la entrada y el objetivo y es útil cuando se entrena un problema de clasificación con clases C. El instructor también explica que el parámetro de peso es útil cuando se trata de un conjunto de entrenamiento desequilibrado.

  • 13:10:00 En esta sección, el instructor analiza la creación de una función de pérdida y un optimizador para la clasificación multiclase. Recomienda dos optimizadores comunes, SGD y Adam, pero elige usar SGD para este ejemplo. Luego desafía a los espectadores a hacer un pase hacia adelante con el modelo creado en el video anterior y considerar cuáles son los resultados sin procesar de un modelo. El instructor también les recuerda a los espectadores que presten atención a los parámetros del dispositivo, ya que puede ocurrir un error de tiempo de ejecución si los tensores no están en el mismo dispositivo. Finalmente, convierte el modelo en modo eval y hace algunas predicciones.

  • 13:15:00 En esta sección, el instructor explica cómo convertir los logits de salida de un modelo en probabilidades de predicción y etiquetas de predicción para problemas de clasificación de clases múltiples. Para hacer esto, la función softmax se usa para convertir los logits en probabilidades de predicción, y luego la predicción con la probabilidad más alta se considera la etiqueta predicha. El instructor demuestra este proceso mediante el código PyTorch y también señala que la suma de las probabilidades de cada muestra siempre será uno debido a la naturaleza de la función softmax.

  • 13:20:00 En esta sección, el instructor explica cómo pasar de la salida sin procesar de un modelo PyTorch para un problema de clasificación de clases múltiples a probabilidades de predicción usando la función de activación softmax, y luego a etiquetas de predicción tomando el argmax del probabilidades de predicción. Este proceso implica convertir la salida sin procesar del modelo en logits, usar la función softmax para obtener las probabilidades de predicción y tomar el argmax de esas probabilidades para obtener las etiquetas de predicción. El instructor señala que, si bien las predicciones actuales son aleatorias ya que el modelo aún no se entrenó, estos pasos se usarán en un ciclo de entrenamiento para entrenar y evaluar el modelo.

  • 13:25:00 En esta sección, el instructor comienza a crear un ciclo de capacitación y prueba para un modelo de varias clases. Primero, configuran semillas manuales para intentar obtener el mismo resultado cada vez, pero tenga en cuenta que esto no está garantizado. Luego establecieron el número de épocas en 100 y colocaron los datos en el dispositivo de destino. Comienza el bucle a través de los datos y, para cada época, el modelo se entrena con un pase hacia adelante y se crean logits a partir de x tren de blobs. La salida de la función Torch softmax se utiliza para calcular la pérdida con precisión y pérdida de entropía cruzada. Luego, el optimizador se pone a cero y se realiza la propagación hacia atrás antes de que se escalone el optimizador. También se presenta el código para la prueba o inferencia, lo que implica poner el modelo en modo de evaluación.

  • 13:30:00 En esta sección, el instructor analiza las capas de abandono, la desactivación de la norma de coincidencia y el modo de inferencia de antorcha para hacer predicciones más rápido. Explican que durante el entrenamiento, las capas de abandono eliminan aleatoriamente algunas de las neuronas para evitar el sobreajuste. El instructor también demuestra cómo calcular los logits de prueba y la precisión de la prueba al pasar la pérdida de prueba y las etiquetas de prueba detrás de escena. Luego discuten un molesto problema de tipo de datos que causó un error de tiempo de ejecución y cómo lo resolvieron. El instructor enfatiza que la solución de problemas del código es una parte esencial del aprendizaje automático y lleva tiempo identificar y resolver los errores.

  • 13:35:00 En esta sección, el narrador se enfrenta a varios desafíos de solución de problemas al crear un modelo de clasificación de varias clases. En primer lugar, se da cuenta de que el error en su código se debe a que uno de los tensores tiene el tipo de datos incorrecto. A través de un poco de investigación y experimentación, cambia el tensor a un "tensor de antorcha larga", que optimiza el cálculo de la pérdida de entropía cruzada. Más tarde, se encuentra con otro error debido a los diferentes tamaños de sus datos de entrenamiento y prueba. Al depurar el código sobre la marcha, identifica el problema y reasigna los datos. A pesar de estos desafíos, la precisión y la pérdida del modelo funcionan como se esperaba, lo que indica que el modelo funciona para un conjunto de datos de clasificación de varias clases.

  • 13:40:00 En esta sección, el instructor explica cómo evaluar el modelo de clasificación multiclase entrenado haciendo predicciones y evaluándolas. El instructor explica que las predicciones se realizan después de configurar el modelo en el modo de evaluación, pasar los datos de prueba y obtener como resultado logits sin procesar. El siguiente paso es convertir logits en probabilidades de predicción llamando a torch.softmax en logits. Luego, las etiquetas de predicción se obtienen llamando a torch.argmax en las probabilidades de predicción. El instructor enfatiza la importancia de visualizar las predicciones al graficarlas y compararlas con los datos reales.

  • 13:45:00 En esta sección, el instructor evalúa visualmente el modelo de clasificación multiclase y explora las funciones lineales y no lineales utilizadas para separar los datos. El instructor también menciona que la mayoría de los datos requieren funciones lineales y no lineales para la clasificación, y PyTorch facilita agregar estas funciones a los modelos. Además, la sección cubre la importancia de evaluar modelos e introduce la precisión y la recuperación como métricas importantes cuando se trata de clases con diferentes cantidades de valores.

  • 13:50:00 En esta sección, el instructor analiza varios métodos de evaluación de clasificación, que incluyen exactitud, precisión, recuperación, puntaje F1, matriz de confusión e informe de clasificación. El instructor explica que, si bien la precisión es la métrica predeterminada para los problemas de clasificación, puede que no sea la mejor para conjuntos de datos desequilibrados. Para conjuntos de datos desequilibrados, se debe utilizar precisión y recuperación. La precisión está determinada por el verdadero positivo sobre el verdadero positivo más el falso positivo, mientras que la recuperación está determinada por el verdadero positivo sobre el verdadero positivo más el falso negativo. El instructor también observa el compromiso entre precisión y recuperación, donde aumentar una métrica reduciría la otra. También se analiza el uso de las bibliotecas torchmetrics y scikit-learn para las métricas de clasificación.

  • 13:55:00 En esta sección, el instructor muestra cómo importar y usar funciones de métricas preconstruidas en PyTorch usando el paquete torchmetrics. Demuestran cómo instalar torchmetrics, importar la métrica de precisión y usarla para calcular la precisión de un modelo multiclase. Sin embargo, también advierten que al usar torchmetrics, las métricas deben estar en el mismo dispositivo que los datos, usando un código independiente del dispositivo. El instructor proporciona un enlace al módulo de torchmetrics y artículos extracurriculares para una mayor exploración. También introducen ejercicios y soluciones para practicar el código cubierto en las secciones anteriores.

parte 15

  • 14:00:00 En esta sección, el instructor aconseja a los espectadores sobre dónde obtener ayuda para el código de visión artificial de PyTorch, incluido el seguimiento del código, el uso de la función de cadena de documentos de Google Colab, la búsqueda de código en Stack Overflow o en la documentación de PyTorch, y haciendo preguntas en la pestaña Discusiones del repositorio de aprendizaje profundo de PyTorch. La sección también cubre ejemplos de problemas de visión por computadora, como problemas de clasificación binarios o de clases múltiples, donde un modelo de aprendizaje automático aprende patrones de diferentes ejemplos de imágenes para determinar si una imagen es un bistec o una pizza, o para clasificar imágenes en múltiples categorías. .

  • 14:05:00 En esta sección, el ponente analiza diferentes aplicaciones de la visión por computadora utilizando el aprendizaje automático, como la clasificación multiclase para problemas de imagen, la detección de objetos y la segmentación de imágenes. El orador brinda un ejemplo de Nutrify, que utiliza el aprendizaje automático para clasificar hasta 100 alimentos diferentes a partir de una imagen cargada. El orador también analiza cómo Tesla usa la visión por computadora para planificar los movimientos de sus autos autónomos utilizando el espacio vectorial tridimensional y el aprendizaje automático. El orador señala que Tesla usa PyTorch, que es el mismo código que se enseña en el curso.

  • 14:10:00 En esta sección del video, el instructor analiza el uso de PyTorch para crear un modelo de visión artificial para la clasificación de imágenes de varias clases. Usando el ejemplo de Nutrify, una tecnología de reconocimiento de fotos para alimentos, el instructor explica las entradas y salidas típicas para un problema de visión por computadora. Las entradas incluyen un tensor que representa la altura, el ancho y los canales de color de una imagen. El instructor también menciona que es posible que ya existan algoritmos existentes para problemas populares de visión por computadora, pero se puede construir uno si es necesario. El resultado deseado para el ejemplo de Nutrify es de tres resultados, uno para cada clase de alimentos.

  • 14:15:00 En esta sección, el video explica cómo se pueden usar modelos de aprendizaje automático para la clasificación de imágenes, utilizando PyTorch y redes neuronales convolucionales (CNN) para representar información numéricamente y entrenar el modelo para reconocer patrones en los datos. El ejemplo dado es predecir los tipos de alimentos en una imagen, como sushi, bistec y pizza, con el uso de PyTorch para codificar la información y CNN para reconocer patrones en las imágenes. El video enfatiza que las formas de entrada y salida variarán según el problema que se resuelva y que las CNN suelen ser la mejor opción para datos de imagen, aunque se pueden usar otros modelos. Finalmente, el video presenta un problema que involucra imágenes en escala de grises de artículos de moda que se usarán para demostrar aún más los mismos principios aprendidos en esta sección.

  • 14:20:00 En esta sección, el instructor analiza la representación de datos de imagen en PyTorch y otras bibliotecas de aprendizaje profundo. Estas bibliotecas a menudo esperan que los canales de color sean los últimos, pero PyTorch representa de forma predeterminada los datos de imagen con los canales de color primero. El video explica la importancia de alinear las formas de entrada y salida de un modelo para un problema dado. El instructor brinda una descripción general del flujo de trabajo de PyTorch para la creación de modelos, incluida la preparación de datos mediante transformaciones y cargadores de datos, la creación o selección de un modelo previamente entrenado, la selección de un optimizador y una función de pérdida, la evaluación del modelo mediante métricas y la experimentación para mejorar. el modelo. La siguiente sección analiza la arquitectura de una red neuronal convolucional (CNN).

  • 14:25:00 En esta sección, el instructor analiza la arquitectura de una red neuronal convolucional típica (CNN). Los datos de entrada pasan por varias capas, incluidas las capas convolucionales, de activación y de agrupación, hasta que se convierten en una forma de salida que se puede convertir en nombres de clase. El instructor enfatiza que hay formas casi ilimitadas de apilar una CNN y demuestra una forma de hacerlo a través de diapositivas. Sin embargo, la mejor manera de aprender es codificarlo, y el instructor dirige a los usuarios a un cuaderno de Google Colab donde pueden practicar la creación de una CNN usando PyTorch y la biblioteca TorchVision. El instructor también proporciona recursos adicionales, incluido un cuaderno de referencia y una sección de visión por computadora de PyTorch en LearnPyTorch.io.

  • 14:30:00 En esta sección del video, el instructor presenta las diferentes bibliotecas de PyTorch para diferentes dominios, destacando la fortaleza de PyTorch en la visión artificial. La biblioteca principal para la visión por computadora es la visión de la antorcha, que contiene conjuntos de datos, modelos previamente entrenados para la visión por computadora y transformaciones para manipular datos de visión en números utilizables por modelos de aprendizaje automático. El instructor demuestra la importación de PyTorch, NN y la visión de la antorcha, y recorre el módulo de transformaciones, que contiene transformaciones de imágenes comunes y se pueden entrenar juntas usando componer. La función to_tensor se presenta como una transformación principal para convertir datos de imagen en formato de tensor.

  • 14:35:00 En esta sección del curso PyTorch para aprendizaje profundo y aprendizaje automático, el instructor cubre las bibliotecas fundamentales de visión por computadora en PyTorch, incluidos TorchVision, módulos derivados de TorchVision y TorchUtils.data.dataset, que es el conjunto de datos base. clase para PyTorch. El instructor también analiza la importancia de usar Matplotlib para la visualización y la necesidad de convertir imágenes en tensores para usar con modelos. Luego, el instructor presenta el conjunto de datos FashionMNIST, que es una versión de la base de datos MNIST original, que presenta imágenes en escala de grises de prendas de vestir. Este conjunto de datos se utilizará para demostrar las técnicas de visión por computadora. El instructor explica que, si bien los investigadores serios de aprendizaje automático consideran que MNIST se usa en exceso y no es representativo de las tareas modernas de visión por computadora, FashionMNIST es un conjunto de datos útil para comenzar.

  • 14:40:00 En esta sección, el instructor analiza cómo descargar y utilizar conjuntos de datos de la biblioteca de TorchVision. Mencionan varios conjuntos de datos de clasificación de imágenes como Caltech101, CIFAR-100 y CIFAR-10, y cómo descargarlos usando el módulo torchvision.datasets. Luego, el instructor continúa demostrando cómo descargar y usar el conjunto de datos Fashion-MNIST, explicando los diversos parámetros y transformaciones que se pueden aplicar al conjunto de datos. También proporcionan código de muestra para descargar los conjuntos de datos de entrenamiento y prueba.

  • 14:45:00 En esta sección, el instructor explica cómo usar los conjuntos de datos torchvision.datasets de PyTorch para descargar conjuntos de datos de visión por computadora de ejemplo, específicamente el conjunto de datos FashionMNIST. Podemos almacenar los datos en una variable llamada "datos" y usar torchvision.transforms para convertir los datos de la imagen en tensores. El instructor también demuestra cómo comprobar la longitud de los conjuntos de datos de prueba y entrenamiento, ver la imagen y la etiqueta de un ejemplo de entrenamiento y obtener más información sobre los nombres de las clases mediante el uso de atributos como ".classes" y ".class_to_idx". Finalmente, explican que una etiqueta no tiene forma porque es solo un número entero.

  • 14:50:00 En esta sección, el instructor analiza las formas de entrada y salida del conjunto de datos MNIST de moda, que se compone de imágenes en escala de grises de diferentes tipos de ropa. La forma de entrada de las imágenes está en formato NCHW, donde el tamaño del lote se establece en "ninguno" y la forma de salida es 10. Para comprender mejor los datos, el instructor usa Matplotlib para visualizar una imagen y su forma, pero encuentra una error porque el formato de datos no coincide con el formato esperado. La sección enfatiza la importancia de comprender las formas y el formato de entrada y salida cuando se trabaja con modelos de aprendizaje automático.

  • 14:55:00 En esta sección, el video explora cómo trazar y visualizar datos de imágenes usando PyTorch y Matplotlib. El instructor demuestra cómo trazar una sola imagen y eliminar dimensiones adicionales usando image.squeeze(). A continuación, trazan un conjunto de 16 imágenes aleatorias del conjunto de datos utilizando una semilla aleatoria fija y la función de subtrama de Matplotlib. El instructor también muestra cómo usar la propiedad o el parámetro cmap para cambiar el mapa de color del gráfico a escala de grises. Luego discuten la importancia de explorar visualmente un conjunto de datos para obtener una mejor comprensión de los datos e identificar posibles problemas, como similitudes entre los suéteres y las camisas en el conjunto de datos.

 

PyTorch para aprendizaje profundo y aprendizaje automático: curso completo (descripción de las partes 16 a 20)


PyTorch para aprendizaje profundo y aprendizaje automático: curso completo


parte 16

  • 15:00:00 En esta sección, el instructor explica la importancia de preparar datos para un modelo de visión por computadora y cómo hacerlo usando conjuntos de datos y cargadores de datos de PyTorch. También analiza la posible necesidad de no linealidad en el modelado de las 60 000 imágenes de ropa para clasificarlas en 10 clases diferentes y cómo dividir el conjunto de datos en lotes más pequeños puede mejorar la eficiencia computacional. El objetivo de esta preparación es crear un iterable de Python que el modelo pueda usar para identificar patrones en los datos.

  • 15:05:00 En esta sección, el instructor explica el concepto de mini lotes y por qué se usa comúnmente en el aprendizaje profundo, comenzando por desglosar un conjunto de datos de 60 000 imágenes en lotes de 32. Las dos razones principales para usar mini lotes son: hacer que la red neuronal sea más eficiente desde el punto de vista computacional al evitar las limitaciones de memoria de la GPU y darle a la red más oportunidades de actualizar sus gradientes por época. Los datos se procesan por lotes utilizando el cargador de datos de torch.utils.data pasándole un conjunto de datos, definiendo el tamaño del lote y configurando la reproducción aleatoria en verdadero para evitar que la red memorice el orden de los datos. El instructor proporciona el código para crear cargadores de datos de entrenamiento y prueba, que se utilizarán en el ciclo de entrenamiento.

  • 15:10:00 En esta sección, se enfatiza la importancia de los mini lotes en los problemas de aprendizaje profundo y se explica el proceso de creación de cargadores de datos de entrenamiento y prueba usando PyTorch. El hiperparámetro de tamaño de lote se establece en 32 y los conjuntos de datos se convierten en iterables. Los conjuntos de datos de entrenamiento y prueba se cargan mediante DataLoader, con el tamaño del lote establecido en 32 para los datos de entrenamiento y los datos de prueba, y la reproducción aleatoria establecida en True para los datos de entrenamiento y False para los datos de prueba. Se exploran los atributos del cargador de datos del tren, como el tamaño del lote y el conjunto de datos. La longitud de los cargadores de datos del tren y de prueba se imprime para determinar el número de lotes en cada uno.

  • 15:15:00 En esta sección, el instructor explica cómo visualizar lotes de imágenes usando PyTorch. El extracto de la transcripción muestra cómo se determina la longitud del cargador de datos del tren, según el tamaño del lote y la cantidad de muestras de entrenamiento. Luego, el instructor muestra cómo visualizar una sola imagen de un lote utilizando la aleatoriedad y verifica el tamaño de la imagen y la etiqueta asociada con esa muestra. El instructor enfatiza que estas formas de entrada y salida variarán según el problema específico, pero la premisa básica sigue siendo la misma: los datos se convierten en lotes para pasarlos a un modelo.

  • 15:20:00 En esta sección, el video instructor explica cómo visualizar imágenes en un lote y convertir los datos en cargadores de datos. También introdujeron el concepto de un modelo de referencia, que se utiliza como punto de partida y es un modelo simple que se puede mejorar más adelante a través de la experimentación. Luego, el instructor introduce una nueva capa, "aplanar", que aplana un rango continuo de dims en un tensor para usar con secuencial, y muestra cómo usarlo como un modelo independiente.

  • 15:25:00 En esta sección, aprendemos sobre aplanamiento y cómo se usa para transformar datos multidimensionales en un solo vector. Después de imprimir las formas antes y después del aplanamiento, vemos que la salida ahora es un vector unidimensional con una longitud de 1784. También vemos que este proceso es similar a la codificación de información en las cámaras de Tesla para usar en modelos de aprendizaje profundo. Luego vemos cómo se utilizarán los datos aplanados en la capa lineal de nuestro modelo PyTorch. El modelo se define mediante nn.Sequential e incluye una capa plana y dos capas lineales. Las formas de entrada y salida están definidas, y vemos que las características de salida de la primera capa lineal coinciden con las características de entrada de la segunda capa lineal.

  • 15:30:00 En esta sección, el instructor explica cómo crear un modelo de red neuronal simple usando PyTorch. El modelo consta de una capa plana seguida de dos capas lineales, sin no linealidades. Se define el método directo del modelo, que toma una entrada, la pasa a través de la capa plana, luego a través de las dos capas lineales y devuelve la salida. Luego, el instructor configura una instancia del modelo y realiza un pase falso hacia adelante para asegurarse de que el modelo funcione como se esperaba. Además, también explican la forma de entrada y salida de cada capa y cómo se organizan para obtener la forma de salida deseada. Finalmente, demuestran la importancia de usar la capa plana y por qué es necesario combinar la salida de la capa anterior en un solo vector.

  • 15:35:00 En esta sección, el instructor revisa el video anterior donde crearon el modelo cero para un problema de visión por computadora y reiteraron la importancia de garantizar que las formas de entrada y salida se alineen con el lugar donde deben estar. También explican que las matrices de pesos y sesgos representan diferentes características en las imágenes, que el modelo aprenderá a través del aprendizaje profundo y el aprendizaje automático. En el futuro, analizan la selección de una función de pérdida, un optimizador y una métrica de evaluación para el modelo, eligiendo la pérdida de entropía cruzada, el optimizador de descenso de gradiente estocástico y la métrica de evaluación de precisión, respectivamente. También proporcionan una referencia a un recurso PyTorch en línea para métricas de evaluación de clasificación.

  • 15:40:00 En esta sección, el video instructor analiza el concepto de usar funciones auxiliares en proyectos de aprendizaje automático de Python. Proporciona un código de muestra para importar un script de Python que contiene funciones comunes, incluida una función auxiliar llamada precisión. La función de precisión calcula la métrica de precisión y el instructor demuestra que se puede importar correctamente al buscar una cadena de documentos. También explica que el uso de funciones auxiliares en proyectos de Python puede ahorrar mucho tiempo y esfuerzo, especialmente cuando se trata de funcionalidades comunes que no necesitan reescribirse cada vez. Finalmente, configura una función de pérdida igual a la pérdida de entropía cruzada de nn puntos y un optimizador para entrenar el modelo.

  • 15:45:00 En esta sección, el instructor configura el optimizador para el descenso de gradiente estocástico y establece una tasa de aprendizaje relativamente alta de 0,1 para el conjunto de datos simple de imágenes de 28x28. Luego, analizan la importancia de realizar un seguimiento del rendimiento de un modelo, así como de su tiempo de ejecución, ya que a menudo existe una compensación entre los dos. Proceden a demostrar cómo crear una función para cronometrar el entrenamiento del modelo usando el módulo de tiempo en Python y pasando el dispositivo torch.device para comparar qué tan rápido se ejecuta el modelo en diferentes dispositivos.

  • 15:50:00 En esta sección, el instructor analiza la importancia de las funciones de tiempo para medir el tiempo que tarda un modelo en entrenar. Demuestra cómo crear un temporizador usando el módulo "temporizador" de Python y muestra cómo incorporarlo en el proceso de capacitación. El instructor también explica cómo usar la función de reconexión de Google Colab y brinda un recordatorio sobre el uso de cargadores de datos para dividir los datos en lotes para la capacitación. Luego describe los pasos involucrados en la creación de un ciclo de entrenamiento y el entrenamiento de un modelo en lotes de datos, enfatizando la necesidad de recorrer épocas y lotes, realizar pasos de entrenamiento y calcular la pérdida del tren por lote. Finalmente, menciona que el modelo será evaluado en el mismo paso que el entrenamiento.

  • 15:55:00 En esta sección, el instructor comienza la fase de prueba importando TQDM para una barra de progreso que indicará cuántas épocas ha pasado el ciclo de entrenamiento. TQDM es una barra de progreso de Python que tiene una sobrecarga baja y es un software de código abierto. Dado que TQDM es tan popular, está integrado en Google CoLab. El instructor establece la semilla e inicia el temporizador antes de establecer el número de épocas en tres para un tiempo de entrenamiento más rápido para ejecutar más experimentos. Crean un bucle de entrenamiento y prueba, instancian la pérdida del tren y calculan la pérdida de entrenamiento por época. Los datos se dividen en lotes y se agrega un bucle para recorrer los datos del lote de entrenamiento.

parte 17

  • 16:00:00 En esta sección, el instructor configura el ciclo de entrenamiento para la red neuronal. El modelo se pone en modo de entrenamiento y se realiza el pase hacia adelante para calcular la pérdida. Los valores de pérdida de entrenamiento se acumulan en cada lote y el optimizador se actualiza una vez por lote en lugar de una vez por época. El instructor también imprime las muestras observadas y la pérdida de entrenamiento promedio por lote por época para propósitos de monitoreo. Este ciclo continuará hasta que todos los lotes hayan sido procesados en el cargador de datos del tren.

  • 16:05:00 En esta sección, el instructor recorre el código para el ciclo de prueba en PyTorch, lo que implica configurar una variable de pérdida de prueba y usar un pase hacia adelante para evaluar los patrones aprendidos en los datos de entrenamiento. La precisión para la prueba también se calcula utilizando la función de precisión descargada, y los valores de pérdida y precisión de la prueba se acumulan por lote y luego se dividen por el número de lotes para encontrar el promedio por época. Estos valores luego se imprimen para seguir el progreso del modelo.

  • 16:10:00 En esta sección, el instructor analiza los pasos finales para configurar el ciclo de entrenamiento, que incluye imprimir la pérdida del tren, la pérdida de prueba y la precisión de la prueba, así como calcular el tiempo de entrenamiento. También brindan sugerencias de solución de problemas para posibles errores que pueden surgir al codificar en PyTorch. Concluyen demostrando cómo ejecutar el código y muestran la barra de progreso del ciclo de entrenamiento.

  • 16:15:00 En esta sección, el instructor analiza los resultados del ciclo de entrenamiento y presenta la idea de la precisión de referencia y el tiempo de entrenamiento. Destaca que los números pueden variar ligeramente debido a la aleatoriedad inherente del aprendizaje automático y el hardware utilizado. Luego, el instructor pasa a evaluar el modelo mediante la creación de una función para construir múltiples modelos y comparar los resultados más adelante. La función toma un modelo, un cargador de datos, una función de pérdida y una función de precisión y devuelve un diccionario que contiene los resultados de la predicción del modelo en el cargador de datos. Él explica que la función es similar al bucle de prueba, pero funciona para usarse con múltiples modelos y cargadores de datos. El instructor también menciona que las siguientes secciones cubrirán la realización de predicciones y la evaluación del modelo en la GPU y la red neuronal convolucional.

  • 16:20:00 En esta sección, el creador del video muestra cómo hacer que la función de pérdida y precisión sea generalizable para que pueda usarse con cualquier modelo y cargador de datos. Demuestran cómo acumular los valores de pérdida y precisión por lote, escalarlos para encontrar la pérdida/precisión promedio por lote y devolver los resultados en un formato de diccionario. También muestran cómo crear una nueva función para calcular los resultados del modelo en el conjunto de datos de prueba, utilizando las funciones que se definieron anteriormente. Finalmente, utilizan una barra de progreso para realizar un seguimiento del rendimiento del modelo en el conjunto de datos de prueba.

  • 16:25:00 En esta sección del curso PyTorch para aprendizaje profundo y aprendizaje automático, el instructor analiza cómo configurar código independiente del dispositivo para entrenar modelos en CPU y GPU. Demuestran la verificación de la disponibilidad de CUDA y el cambio a la GPU para aprovechar su potencia de procesamiento. El instructor también recomienda comenzar con conjuntos de datos y modelos más pequeños antes de aumentar la complejidad y el tamaño. Finalmente, proponen construir un nuevo modelo para el conjunto de datos y probar su rendimiento con y sin no linealidades mientras se ejecuta en la GPU.

  • 16:30:00 En esta sección, el instructor presenta el concepto de no linealidad en las redes neuronales y alienta a los espectadores a experimentar con la creación de un modelo con funciones no lineales. Se analizan los beneficios de la no linealidad para modelar datos no lineales y el instructor explica cómo implementar una red neuronal con capas lineales y no lineales mediante PyTorch. Recorren el código paso a paso y enfatizan la importancia de la experimentación para encontrar el mejor modelo para un conjunto de datos determinado.

  • 16:35:00 En esta sección, el instructor analiza la personalización de redes neuronales con funciones lineales y no lineales, y demuestra cómo agregar dos funciones de activación de ReLU a una red previamente definida. A continuación, se anula el método directo para permitir que la entrada pase a través de la pila de capas y se crea una instancia del modelo en el dispositivo. Luego, el video pasa a crear una función de pérdida, un optimizador y métricas de evaluación para el nuevo modelo, que ha agregado capas no lineales, lo que enfatiza la importancia de realizar experimentos para comprender cómo las diferentes funciones pueden influir en las redes neuronales.

  • 16:40:00 En esta sección, el orador habla sobre la creación de funciones auxiliares y el funcionamiento de ciclos de capacitación y evaluación en PyTorch. Mencionan la importación de la función de precisión y la configuración de una función de pérdida, así como el optimizador. El siguiente paso es construir bucles de entrenamiento y evaluación como funciones para que puedan ser llamados repetidamente sin riesgo de errores. El orador recorre el proceso de creación de una función de paso de tren, que requiere un modelo, un cargador de datos, una función de pérdida, un optimizador y, opcionalmente, una función de precisión y un dispositivo de destino como entradas. La función de paso de tren recorre un cargador de datos, realiza un pase hacia adelante, calcula la pérdida, retropropaga y actualiza los parámetros del modelo con el optimizador.

  • 16:45:00 En esta sección, el presentador explica cómo realizar un paso de entrenamiento en PyTorch. Comienzan definiendo las entradas de la función, incluido un modelo, un cargador de datos, una función de pérdida, un optimizador y un dispositivo. Luego, recorren cada línea de la función, comenzando con un bucle a través del cargador de datos y colocando los datos en el dispositivo de destino. También agregan una función de precisión para acumular la puntuación de precisión por lote. Finalmente, al final del paso de entrenamiento, calculan la pérdida promedio y la precisión por lote, e imprimen los resultados. En general, esta sección proporciona una explicación clara y concisa de cómo usar PyTorch para el aprendizaje profundo y el aprendizaje automático.

  • 16:50:00 En esta sección, el capacitador funcionaliza el ciclo de prueba mediante la creación de una función de paso de prueba que toma como entradas un modelo, un cargador de datos, una función de pérdida, una función de precisión y un dispositivo. El entrenador demuestra cómo configurar una pérdida de prueba y precisión y poner el modelo en modo de evaluación antes de recorrer el cargador de datos y realizar un pase hacia adelante. El capacitador también explica la importancia de usar el administrador de contexto del modo de inferencia y crear código independiente del dispositivo. La pred de la prueba se calcula pasando X, y la pérdida y la precisión de la prueba se acumulan por lote utilizando las funciones respectivas. Finalmente, el entrenador convierte los logits de salida en etiquetas de predicción tomando el argmax.

  • 16:55:00 En esta sección del curso completo de PyTorch, el instructor demuestra cómo crear una función de paso de prueba y un ciclo de optimización y evaluación usando las funciones de paso de entrenamiento y paso de prueba. Las nuevas funciones se utilizan para entrenar un modelo y evaluar su precisión durante tres épocas. El instructor también muestra cómo medir el tiempo que tarda el modelo en ejecutarse en la GPU en comparación con la CPU.

parte 18

  • 17:00:00 En esta sección, el instructor nos guía a través de la configuración del paso de prueba para nuestro modelo de aprendizaje profundo y la creación de un temporizador para medir el tiempo de capacitación. El código es simple y eficiente, ya que está diseñado para ser reutilizable en proyectos futuros. Además, ejecutamos el segundo experimento de modelado y comparamos los resultados con el primer modelo, que utilizó capas no lineales. Aunque el segundo modelo fue un poco más rápido en términos de tiempo de entrenamiento, no produjo mejores resultados que el anterior, lo que significa que sus números pueden no ser los mismos que los del instructor, pero deberían ser bastante similares en la dirección. Finalmente, el instructor explica que nuestro modelo no es demasiado complejo y nuestro conjunto de datos no es muy grande, por lo que esto podría explicar por qué los tiempos de entrenamiento de la CPU y la GPU no son drásticamente diferentes.

  • 17:05:00 En esta sección, el instructor explica que a veces un modelo entrena más rápido en una CPU que en una GPU. Las dos razones principales de esto son que la sobrecarga de copiar datos/modelos hacia y desde la GPU supera los beneficios de cómputo que ofrece la GPU y que el hardware que se utiliza tiene una CPU mejor en términos de capacidad de cómputo que la GPU. Sin embargo, el instructor señala que esto es menos común y, en general, una GPU moderna es más rápida para calcular algoritmos de aprendizaje profundo que una CPU general. A continuación, el instructor comparte un recurso que habla sobre cómo hacer que el aprendizaje profundo sea más rápido al optimizar el ancho de banda y los costos generales, entre otras cosas. Finalmente, el instructor crea un diccionario de resultados para el modelo uno para comparar los resultados del modelado más adelante.

  • 17:10:00 En esta sección, el instructor analiza un error común que puede ocurrir en los modelos de aprendizaje profundo con respecto a las discrepancias de dispositivos entre los datos y el modelo. Explica que el error ocurrió porque los datos y el modelo estaban en diferentes dispositivos y sugiere una solución haciendo que el código sea independiente del dispositivo. También advierte que siempre es mejor crear un código independiente del dispositivo. Finalmente, el instructor presenta el siguiente experimento de modelado, que involucra la construcción de una red neuronal convolucional (CNN) y explica la arquitectura de una CNN típica.

  • 17:15:00 En esta sección, el instructor explica los diferentes tipos de capas en una red neuronal convolucional simple (CNN). La CNN comienza con una entrada, preprocesada en un tensor en rojo, verde y azul para una imagen. Luego, la entrada pasa a través de una combinación de capas convolucionales, capas relu y capas de agrupación. Al modelo de aprendizaje profundo se le pueden agregar más capas para encontrar más patrones en los datos, con cada capa realizando una combinación diferente de operaciones matemáticas en los datos. El instructor demuestra la CNN utilizando el sitio web explicativo de CNN, donde la entrada de diferentes imágenes pasa a través de diferentes capas, siendo el resultado final la clase con el valor más alto.

  • 17:20:00 En esta sección, el instructor explica cómo funcionan las redes neuronales convolucionales y la belleza del aprendizaje profundo. Cada capa de la red está diseñada para aprender diferentes características de los datos, y la propia red descubre la mejor manera de aprender esas características. Luego, el instructor presenta el sitio web explicativo de CNN como un recurso para aprender más sobre las redes neuronales convolucionales, pero también alienta
    estudiantes a unirse para replicar la red neuronal en el código PyTorch. Luego, el instructor procede a construir una pequeña red neuronal convolucional VGG en PyTorch y explica que los autores de los trabajos de investigación pueden nombrar nuevas arquitecturas modelo para que sea más fácil para futuras referencias. El código se inicializa con la forma de entrada, las unidades ocultas y la forma de salida, que son parámetros típicos en la construcción de un modelo de PyTorch.

  • 17:25:00 En esta sección, el instructor explica cómo crear una red neuronal utilizando bloques en PyTorch, que a menudo se denominan bloques convolucionales. Estos bloques se componen de múltiples capas y una arquitectura general se compone de múltiples bloques. El instructor muestra cómo crear bloques convolucionales escribiendo dos ejemplos de capas con hiperparámetros como canales de entrada y salida, tamaño del núcleo, zancada y relleno. El instructor también proporciona recursos interactivos para que los alumnos comprendan los conceptos básicos de los hiperparámetros y los alienta a seguirlos.

  • 17:30:00 En esta sección, el instructor recorre el código para construir un modelo de aprendizaje profundo usando PyTorch, centrándose específicamente en las capas de bloques convolucionales. El modelo toma datos de imagen 2D y las capas se utilizan para aprender una representación comprimida de los datos de entrada, con la agrupación máxima utilizada para tomar el valor máximo de los datos de entrada. El código se divide en dos bloques y luego se agrega una capa de salida. Las entradas de la capa final se aplanan antes de pasar por la última capa lineal para crear la salida final.

  • 17:35:00 En esta sección, el instructor construye la capa clasificadora para una red neuronal convolucional (CNN) llamada tiny VGG, que tiene dos capas que actúan como extractores de características y una capa final que clasifica estas características en clases objetivo. El instructor codifica la capa clasificadora utilizando secuencial y pasa una capa plana para aplanar la salida de las dos capas anteriores en un solo vector de características. Luego, el vector de características se pasa a una capa nn.linear, que calcula las características de entrada en función del número de unidades ocultas y las características de salida en función de la longitud de las clases. Finalmente, el instructor configura el método directo e imprime la forma de punto X para rastrear los cambios de forma de cada capa. El instructor establece la forma de entrada para el modelo CNN, que tiene solo un canal de color para imágenes en blanco y negro, establece el valor de las unidades ocultas para cada capa y finaliza instanciando el modelo.

  • 17:40:00 En esta sección del video, el instructor repasa el código que escribió en la sección anterior para crear una red neuronal convolucional usando PyTorch. Identifican y corrigen algunos errores tipográficos en el código y explican que la capa maxpool2d no tiene ningún parámetro que se pueda aprender. Luego presentan la capa conv2d y explican que su tensor de peso y su valor de sesgo manipulan la entrada para producir la salida. Muestran cómo reproducir la primera capa del sitio web explicativo de CNN usando una entrada ficticia en PyTorch y proporcionan un enlace a la documentación de PyTorch para leer más. También demuestran cómo crear imágenes por lotes usando el estilo PyTorch con canales de color primero.

  • 17:45:00 En esta sección, el video tutorial explora la composición de un modelo PyTorch y cómo funcionan las circunvoluciones en la práctica. El instructor explica cómo el modelo, compuesto por números aleatorios, ajusta estas capas para representar mejor los datos usando capas comp2d. Después de pasar algunos datos aleatorios a través de una de estas capas, el tutorial se sumerge en el tamaño del kernel y cómo determina la operación realizada por la convolución. El instructor profundiza en el propósito de una capa convolucional, que es garantizar que este kernel pueda realizar correctamente la operación para proporcionar el resultado correcto.

  • 17:50:00 En esta sección, el instructor explica los efectos de cambiar los valores de paso y relleno en una capa convolucional en PyTorch. Un valor de zancada de 1 significa que la convolución salta sobre un píxel a la vez, mientras que un valor de zancada de 2 salta sobre dos píxeles a la vez, lo que lleva a una disminución en el tamaño de salida. Mientras tanto, agregar relleno a los bordes de la imagen permite que el kernel opere con la información de la imagen en los bordes. El instructor también señala que cuando no está seguro de qué valores establecer para los diferentes parámetros, es común copiar los valores existentes y ajustarlos según sea necesario. La sección concluye con una demostración de cómo agregar una dimensión por lotes a una imagen de prueba y pasarla a través de una capa convolucional en PyTorch.

  • 17:55:00 En esta sección, el video cubre las capas de agrupación máxima y convolucional en PyTorch para el aprendizaje profundo y el aprendizaje automático. El video demuestra cómo usar PyTorch para crear capas convolucionales pasando una imagen de prueba a través de una capa convolucional para producir una salida. Al jugar con los valores de tamaño del núcleo, zancada y relleno, los usuarios pueden observar cómo cambia el tamaño de salida. El video también cubre la capa de agrupación máxima y muestra cómo crear una capa de agrupación máxima de muestra con un tamaño de kernel de dos.

parte 19

  • 18:00:00 En esta sección, el instructor demuestra cómo pasar datos a través de una capa convolucional y una capa de grupo máximo en PyTorch. Primero pasan la imagen de prueba a través de la capa de conversión y luego imprimen la forma. Luego, pasan la salida de la capa conv a través de la capa max pool y nuevamente imprimen la forma resultante. El instructor explica que la capa max pool toma el máximo de un cierto rango de tensor interno y reduce el tamaño de salida de la capa convolucional. También demuestran cómo cambiarán las formas si se modifican los valores de las capas y los parámetros.

  • 18:05:00 En esta sección, el instructor explica el concepto de Max Pooling en redes neuronales convolucionales (CNN). El objetivo es comprimir los datos de entrada en un vector de características más pequeño que se pueda usar para futuras predicciones. La agrupación máxima implica tomar el valor máximo de una determinada sección de datos de entrada para determinar la característica más importante en esa región. El instructor demuestra los efectos de variar el tamaño del núcleo para la agrupación máxima y cómo afecta el espacio de funciones. También brindan un ejemplo visual que usa un tensor aleatorio más pequeño para mostrar el proceso de agrupación máxima. En general, la agrupación máxima es una técnica útil para reducir la dimensionalidad de los datos mientras se mantienen características importantes para las predicciones.

  • 18:10:00 En esta sección del curso, el instructor analiza el propósito de la capa de grupo máximo en una red neuronal convolucional, que es comprimir las funciones aprendidas de la capa convolucional en un espacio más pequeño, lo que finalmente conduce a una representación comprimida de los datos de entrada que se pueden utilizar para hacer predicciones. El instructor también desafía a los espectadores a crear un tensor ficticio y pasarlo a través de la pequeña red VGG que construyeron en los videos anteriores para ver qué sucede con la forma del tensor ficticio a medida que se mueve a través de los bloques convolucionales. Finalmente, el instructor explica que el propósito de replicar un modelo de otro lugar y pasar datos a través de él es una práctica común en el aprendizaje profundo.

  • 18:15:00 En esta sección, el instructor brinda un ejemplo de un pase hacia adelante en PyTorch y demuestra cómo lidiar con los errores de desajuste de forma. Utilizan una imagen creada previamente a partir del conjunto de datos Fashion MNIST y crean un tensor de la misma forma que la imagen. Sin embargo, obtienen un error debido a que el tensor tiene una dimensión adicional para el tamaño del lote. Para solucionar esto, descomprimen el tensor en la dimensión cero para agregar la dimensión del lote. También se aseguran de que el tensor esté en el mismo dispositivo que el modelo y demuestran cómo solucionar problemas y encontrar las formas necesarias para las diferentes capas del modelo. La sección concluye con el instructor recreando el modelo utilizando la información recopilada sobre las formas.

  • 18:20:00 En esta sección del video, el instructor demuestra un truco para depurar las formas de las capas en un modelo de red neuronal. Al pasar datos ficticios a través del modelo e imprimir las formas de la salida en cada capa, el instructor puede determinar dónde se producen los desajustes de forma e identificar problemas con la capa del clasificador. Luego, el instructor muestra cómo calcular a mano las formas de entrada y salida de las capas convolucionales, pero también afirma los beneficios de usar código para realizar estos cálculos. Finalmente, el instructor usa el truco para asegurarse de que el modelo sea compatible con las reglas de multiplicación de matrices y para confirmar que el modelo puede procesar datos con la forma deseada.

  • 18:25:00 En esta sección, el instructor analiza las formas de entrada y salida de cada capa en el modelo que han construido. Pasan un tensor aleatorio a través del modelo y obtienen una forma de salida de uno y diez, ya que tienen diez clases en su conjunto de datos. Luego pasan a configurar una función de pérdida y un optimizador para su segundo modelo y explican cómo van a entrenar su primera red neuronal convolucional (CNN). Importan una función de precisión, configuran una función de pérdida de entropía cruzada y mantienen el optimizador igual que antes, torch.opt en SGD. Luego demuestran cómo usar sus funciones de paso de entrenamiento y paso de prueba para entrenar el modelo dos, que cubrirán en detalle en el siguiente video. Finalmente, configuraron la funcionalidad de entrenamiento y prueba realizando el paso de entrenamiento con el modelo e intentando aprender en un cargador de datos.

  • 18:30:00 En esta sección, el video se enfoca en entrenar una red neuronal convolucional y mide el tiempo que toma entrenarla usando TQDM para medir el progreso. Configuran la función de precisión, la función de pérdida, el optimizador, el cargador de datos del tren y el cargador de datos de prueba. También miden el tiempo de finalización para saber cuánto tiempo ha tardado en ejecutarse el código. Tuvieron un problema de código con una impresión, pero lo solucionaron y entrenaron con éxito su primera CNN, logrando una precisión de prueba del 88,5 % en aproximadamente 42 segundos. El video aconseja ser consciente de que un modelo con mejor desempeño generalmente toma más tiempo para entrenar.

  • 18:35:00 En esta sección, el instructor analiza la importancia de comparar los resultados y el tiempo de entrenamiento en diferentes modelos en experimentos de aprendizaje automático. Presentan tres diccionarios de resultados de modelos y crean un marco de datos usando pandas para comparar la precisión, la pérdida y el tiempo de entrenamiento de cada modelo. Encuentran que la red neuronal convolucional (Modelo 2) superó a los otros modelos con una precisión del 88 % y alientan a los espectadores a experimentar con diferentes arquitecturas de modelos, hiperparámetros y tiempos de entrenamiento para obtener mejores resultados. El instructor enfatiza la importancia de considerar el equilibrio entre el rendimiento del modelo y la velocidad en las aplicaciones prácticas.

  • 18:40:00 En esta sección, el instructor analiza la comparación de los resultados de los tres experimentos realizados en la sección anterior utilizando un marco de datos y un gráfico. El tiempo de entrenamiento y la precisión se comparan para cada modelo, y el instructor señala que el tiempo de entrenamiento variará según el hardware utilizado. El modelo con mejor desempeño fue la red neuronal convolucional, pero tuvo el tiempo de entrenamiento más largo. El instructor sugiere tratar de hacer predicciones sobre muestras aleatorias del conjunto de datos de prueba utilizando el modelo de mejor rendimiento.

  • 18:45:00 En esta sección, el instructor explica cómo crear una función llamada "hacer predicciones" para evaluar un modelo de aprendizaje automático entrenado. La función toma un modelo de tipo de módulo final y antorcha, algunos datos y un tipo de dispositivo. El objetivo es tomar muestras aleatorias del conjunto de datos de prueba, hacer predicciones sobre ellas utilizando el modelo y visualizar las predicciones. La función prepara la muestra soltándola y pasándola al dispositivo de destino. Luego hace un pase hacia adelante en el modelo para obtener los logits sin procesar y aplica la función de activación softmax para obtener la probabilidad de predicción. Finalmente, las probabilidades de predicción se convierten en etiquetas de predicción, y la lista de probabilidades de predicción relacionadas con muestras particulares se apila para convertir la lista en un tensor. La sección finaliza con una demostración de la función en acción utilizando muestras de prueba.

  • 18:50:00 En esta sección, el instructor explica cómo muestrear aleatoriamente datos de prueba y crear etiquetas de prueba para evaluar las predicciones del modelo. Los datos de prueba aún no se han convertido en un cargador de datos y el código muestra nueve muestras de datos de prueba aleatorias. El instructor enfatiza la importancia de hacer predicciones en muestras de datos de prueba aleatorias incluso después de entrenar el modelo para comprender cómo se está desempeñando. El instructor también analiza cómo convertir las probabilidades de predicción en etiquetas de predicción utilizando argmax para tomar el índice del valor más alto en las probabilidades.

  • 18:55:00 En esta sección, el instructor escribe código para trazar las predicciones e imágenes para muestras aleatorias. El código crea una figura de Matplotlib con tres filas y tres columnas, y enumera cada muestra en las muestras de prueba. Para cada muestra, se crea una subparcela y se traza la imagen de destino. La etiqueta de predicción y la etiqueta de verdad también se encuentran y se convierten en formato de texto utilizando nombres de clase y los índices de etiquetas de prueba y clases de predicción. Finalmente, se crea un título para la trama y el color del texto del título cambia a verde si la etiqueta de predicción es igual a la etiqueta de verdad, y a rojo si no son iguales.

parte 20

  • 19:00:00 En esta sección, el presentador analiza la importancia de visualizar las predicciones del modelo de aprendizaje automático y muestra cómo trazar las predicciones de una red neuronal convolucional (CNN) entrenada en muestras seleccionadas al azar de un conjunto de datos de prueba. El presentador demuestra cómo trazar imágenes con sus etiquetas predichas y verdaderas y cambiar el color del texto del título dependiendo de si la predicción es correcta o no. Al analizar las predicciones, el presentador muestra las posibles confusiones entre las clases de etiquetas y sugiere que la visualización de predicciones puede proporcionar información para mejorar las etiquetas o el propio modelo. Luego, el presentador presenta el concepto de matriz de confusión como otra forma de evaluar el rendimiento del modelo al comparar las etiquetas pronosticadas y verdaderas de un gran conjunto de muestras de prueba.

  • 19:05:00 En esta sección, el instructor explica cómo evaluar un modelo de clasificación de varias clases mediante la matriz de confusión en PyTorch. La matriz de confusión es una representación visual que muestra el rendimiento del modelo en diferentes clases. El instructor explica cómo usar las métricas de antorcha para las métricas de evaluación y muestra cómo acceder a las métricas de evaluación de la matriz de confusión. Además, ML extend se usa para trazar la matriz de confusión. Es importante destacar que el instructor explica que Google Colab no tiene la versión requerida de ML extend, y se necesita la versión 0.19.0 para garantizar la instalación adecuada del paquete. Finalmente, el video muestra cómo hacer predicciones en el conjunto de datos de prueba y cómo configurar el modelo en el modo de evaluación con el modo de inferencia de antorcha como administrador de contexto.

  • 19:10:00 En esta sección, el instructor demuestra cómo iterar a través del cargador de datos de prueba para hacer predicciones usando PyTorch. Las predicciones se agregan a una lista y luego se concatenan en un tensor usando torch.cat. El tensor resultante tiene una predicción por muestra de prueba. El instructor también instala métricas de antorcha y muestra cómo usar un ciclo de prueba y aceptación para importarlo. Finalmente, la versión requerida de ML extend se verifica utilizando una declaración de afirmación para usar en la función de matriz de confusión de gráficos.

  • 19:15:00 En esta sección, el instructor explica cómo instalar y actualizar paquetes en Google Colab usando el ejemplo de instalar métricas de antorcha y actualizar ML extender a la versión 0.19.0 o superior. El instructor recorre el código y explica cómo verificar si la instalación se realizó correctamente y qué hacer si surge algún error durante el proceso, incluido cómo reiniciar el tiempo de ejecución si es necesario. Una vez que se completa la instalación, el instructor pasa a explicar cómo crear una matriz de confusión con las predicciones que se hicieron en todo el conjunto de datos de prueba en el video anterior.

  • 19:20:00 En esta sección, el instructor explica cómo crear y trazar una matriz de confusión para evaluar el rendimiento de un modelo de aprendizaje profundo. En primer lugar, se importan la clase de matriz de confusión de las métricas de antorcha y la función de matriz de confusión de trazado de ML extend. Luego, se configura una instancia de matriz de confusión pasando el número de clases como la longitud de la lista de nombres de clase. El tensor de matriz de confusión se crea pasando predicciones y objetivos en el conjunto de datos de prueba. Finalmente, la matriz de confusión se traza utilizando la función de matriz de confusión de trazado al pasar el tensor de la matriz de confusión y la lista de nombres de clase, creando una diagonal visualmente agradable que muestra las predicciones correctas y las áreas potenciales donde el modelo está cometiendo errores.

  • 19:25:00 En esta sección, el instructor explica la importancia de usar una matriz de confusión para evaluar visualmente las predicciones de un modelo de clasificación, especialmente cuando los errores cometidos por el modelo son significativos, como confundir dos clases de datos de aspecto similar, como camisetas y abrigos El uso de una matriz de confusión es una forma poderosa de evaluar el rendimiento de un modelo y puede ayudar a identificar cualquier problema con las etiquetas existentes. También habla de la importancia de guardar y cargar un modelo entrenado, especialmente cuando el rendimiento del modelo es satisfactorio. Al guardar el modelo en un archivo, se puede usar en otro lugar o volver a cargar para asegurarse de que se haya guardado correctamente. El instructor explica cómo crear una ruta de directorio del modelo y una ruta para guardar el modelo y luego muestra cómo guardar el dictado de estado del modelo usando el método torch.save.

  • 19:30:00 En esta sección, el instructor demuestra cómo guardar y cargar un modelo de PyTorch. Se guarda el diccionario de estado, que representa todos los parámetros aprendidos del modelo después de haberlo entrenado. Para cargar el modelo guardado, se crea una nueva instancia con los mismos parámetros que la original. Es importante configurar el modelo cargado con los mismos parámetros que el original para evitar un error de desajuste de forma. A continuación, se evalúa el modelo cargado para asegurarse de que produce resultados similares a los del modelo original. El instructor enfatiza la importancia de evaluar un modelo después de guardarlo y cargarlo para asegurarse de que se haya guardado correctamente.

  • 19:35:00 En esta sección, vemos que el modelo cargado produce los mismos resultados que el modelo previamente entrenado antes de guardarlo, y podemos usar torch.is_close para verificar mediante programación si los resultados del modelo son similares entre sí. El nivel de tolerancia absoluta se puede ajustar para garantizar que los resultados sean lo suficientemente similares y, si hay discrepancias, se recomienda verificar si el modelo se guarda correctamente y si se configuran semillas aleatorias. También se analiza el flujo de trabajo para un problema de visión por computadora, desde el uso de materiales de referencia y bibliotecas como torchvision hasta la evaluación del modelo y la experimentación con modelos de redes neuronales no lineales y convolucionales para encontrar el mejor.

  • 19:40:00 En esta sección de "PyTorch para el aprendizaje profundo y el aprendizaje automático", el instructor anima a los espectadores a practicar lo que han aprendido hasta ahora visitando el sitio web learn pytorch.io y completando los ejercicios proporcionados. Los ejercicios se enfocan en practicar el código y los conceptos cubiertos en las secciones anteriores, y también hay un plan de estudios adicional disponible para aquellos que desean profundizar en la visión por computadora. Además, la sección cubre el tema de los conjuntos de datos personalizados de pytorch y ofrece recursos para obtener ayuda si es necesario, como la documentación de pytorch y el desbordamiento de pila.

  • 19:45:00 En esta sección del curso de PyTorch, se analiza cómo trabajar con conjuntos de datos personalizados, así como las diferentes bibliotecas de dominio, como visión de antorcha, texto de antorcha, audio de antorcha y grabación de antorcha. Las bibliotecas de dominio contienen funciones de carga de datos para diferentes fuentes de datos y vienen con conjuntos de datos incorporados, como conjuntos de datos de visión de antorcha para conjuntos de datos de visión preconstruidos como Fashion MNIST, y otros personalizados. Cada biblioteca de dominio también tiene un módulo de 'conjuntos de datos' que ayuda a los usuarios a trabajar con diferentes conjuntos de datos en diferentes dominios y, según el dominio en el que esté trabajando, como visión, texto, audio, recomendación, se recomienda buscar en su biblioteca personalizada. en PyTorch.

  • 19:50:00 En esta sección, el instructor analiza cómo cargar conjuntos de datos personalizados en PyTorch para usarlos en la construcción de un modelo de visión artificial. El modelo que construirán se llama food vision mini, que clasificará imágenes de pizza, sushi y bistec. El instructor cubre varios pasos involucrados en el entrenamiento de un modelo, como elegir una función de pérdida y un optimizador, construir un ciclo de entrenamiento y evaluar el modelo. También explican cómo transformar datos para usarlos con un modelo y comparar modelos con y sin aumento de datos. Finalmente, muestran cómo hacer predicciones sobre datos personalizados y brindan un recurso para acceder al cuaderno de video en el repositorio de aprendizaje profundo de PyTorch.

  • 19:55:00 En esta sección, el instructor analiza el proceso de obtener sus propios datos en PyTorch a través de conjuntos de datos personalizados. Destacan la importancia de usar bibliotecas de dominio para funciones de carga de datos y funciones de carga de datos personalizables y dan ejemplos de estas bibliotecas para varias categorías, como visión, texto, audio y recomendación. El instructor también demuestra cómo importar las bibliotecas necesarias y configurar un código independiente del dispositivo para las mejores prácticas con PyTorch. Muestran cómo verificar los dispositivos CUDA disponibles y cómo cambiar el tipo de tiempo de ejecución para usar GPU para un procesamiento más rápido. Finalmente, el instructor sugiere cómo obtener datos para trabajar en el siguiente video.