
Mis Cursos en Udemy.
Te invito a conocer el resto de mis formaciones disponibles en la plataforma Udemy.
Y por ser alumno y haber finalizado este curso, te ofrezco un gran descuento en mis cursos online como agradecimiento por tu apoyo y confianza prestada en mis formaciones. Accede al contenido exclusivo de esta lección y consigue tu curso con descuento.
En esta lección aprenderás los más importante sobre el uso correcto y óptimo del portal formativo Udemy. Recuerda que si aún sigues tienes algún problema o dificultad durante la formación puedes contactar conmigo.
En la siguiente clase te detallo como está organizado y configurado el curso que estas comenzando. El objetivo es que aproveches al máximo la formación y saques el mayor beneficio de la misma.
¡Comencemos!
Información del curso que vamos a comenzar.
Contenidos principales y plan docente del curso.
Para ir conociéndonos todos, te invito a presentarte. Ponle cara a tu perfil y sube un par de proyectos, personales o profesionales, compártelos en el foro de esta clase y cuéntanos en qué lugar o proyecto desearías trabajar idealmente.
Recuerda que desde el apartado de "Preguntas y Respuestas" podrás presentarte al resto de alumnos de este curso y plantear todas las inquietudes que tengas.
Sección que dispondrá de una serie de recursos y enlaces interesantes para poder complementar eficazmente la formación del curso.
¡Clase práctica! Recuerda que los archivos y cuadernos asociados a esta clase se encuentran en la primera lectura de esta sección.
Good coding!
¡Clase práctica! Recuerda que los archivos y cuadernos asociados a esta clase se encuentran en la primera lectura de esta sección.
Good coding!
¡Clase práctica! Recuerda que los archivos y cuadernos asociados a esta clase se encuentran en la primera lectura de esta sección.
Good coding!
¡Clase práctica! Recuerda que los archivos y cuadernos asociados a esta clase se encuentran en la primera lectura de esta sección.
Good coding!
¡Clase práctica! Recuerda que los archivos y cuadernos asociados a esta clase se encuentran en la primera lectura de esta sección.
Good coding!
¡Clase práctica! Recuerda que los archivos y cuadernos asociados a esta clase se encuentran en la primera lectura de esta sección.
Good coding!
¡Clase práctica! Recuerda que los archivos y cuadernos asociados a esta clase se encuentran en la primera lectura de esta sección.
Good coding!
¡Clase práctica! Recuerda que los archivos y cuadernos asociados a esta clase se encuentran en la primera lectura de esta sección.
Good coding!
¡Clase práctica! Recuerda que los archivos y cuadernos asociados a esta clase se encuentran en la primera lectura de esta sección.
Good coding!
Sección que dispondrá de una serie de recursos y enlaces interesantes para poder complementar eficazmente la formación del curso.
Clase con conceptos teóricos - Parte 1
Clase con conceptos teóricos - Parte 2
Clase con conceptos teóricos - Parte 3
¡Clase práctica! Recuerda que los archivos y cuadernos asociados a esta clase se encuentran adjuntos.
Good coding!
¡Clase práctica! Recuerda que los archivos y cuadernos asociados a esta clase se encuentran adjuntos.
Good coding!
¡Clase práctica! Recuerda que los archivos y cuadernos asociados a esta clase se encuentran adjuntos.
Good coding!
Sección que dispondrá de una serie de recursos y enlaces interesantes para poder complementar eficazmente la formación del curso.
¡Clase teórica! Antes de trabajar la parte práctica veremos los conceptos fundamentales de la sesión.
Good coding!
¡Clase teórica! Antes de trabajar la parte práctica veremos los conceptos fundamentales de la sesión.
Good coding!
¡Clase teórica! Antes de trabajar la parte práctica veremos los conceptos fundamentales de la sesión.
Good coding!
¡Clase teórica! Antes de trabajar la parte práctica veremos los conceptos fundamentales de la sesión.
Good coding!
¡Clase teórica! Antes de trabajar la parte práctica veremos los conceptos fundamentales de la sesión.
Good coding!
Simulación de una arquitectura de red neuronal
Análisis de Background sobre Redes Neuronales
Sesión teórica sobre Parámetros en redes neuronales
Sesión teórica sobre Algoritmo de Gradiente Descendiente
Sesión teórica sobre Multilayer Perceptron
Sesión teórica sobre Coste, sesgo y activación
Sesión teórica sobre Backpropagation
Sección que dispondrá de una serie de recursos y enlaces interesantes para poder complementar eficazmente la formación del curso.
En este tutorial vamos a utilizar el conjunto de datos Pima Indians Diabetes. Describe los datos de los registros médicos de los pacientes y si tuvieron una aparición de diabetes dentro de los cinco años. Es un problema de clasificación binaria (aparición de diabetes como 1 o no como 0). Las variables de entrada que describen a cada paciente son numéricas y tienen escalas variables. A continuación, se enumeran los ocho atributos del conjunto de datos:
Número de embarazos.
Concentración de glucosa en plasma a 2 horas en una prueba de tolerancia a la glucosa oral.
Presión arterial diastólica (mm Hg).
Espesor del pliegue cutáneo del tríceps (mm).
Insulina sérica de 2 horas (mu U/ml).
Índice de masa corporal.
Función del pedigrí de la diabetes.
Años de edad.
Clase, aparición de diabetes en cinco años.
Dado que todos los atributos son numéricos, es fácil de usar directamente con redes neuronales que esperan entradas y valores de salida numéricos, y es ideal para nuestra primera red neuronal en Keras.
Ahora que el modelo está definido, podemos compilarlo. La compilación del modelo utiliza las bibliotecas numéricas eficientes debajo de las cubiertas (el llamado backend) como Theano o TensorFlow. El backend elige automáticamente la mejor manera de representar la red para entrenar y hacer predicciones para ejecutar en su hardware.
Al compilar, debemos especificar algunas propiedades adicionales requeridas al entrenar la red. Recuerde que entrenar una red significa encontrar el mejor conjunto de pesos para hacer predicciones para este problema.
Debemos especificar la función de pérdida que se utilizará para evaluar un conjunto de ponderaciones, el optimizador utilizado para buscar entre diferentes ponderaciones para la red y cualquier métrica opcional que nos gustaría recopilar e informar durante el entrenamiento. En este caso usaremos la pérdida logarítmica, que para un problema de clasificación binaria se define en Keras como binary_crossentropy.
También usaremos el algoritmo de Gradiente Descendiente adam sin ninguna otra razón que sea un valor predeterminado eficiente. Finalmente, debido a que es un problema de clasificación, recopilaremos e informaremos la precisión de la clasificación como métrica.
Hemos definido nuestro modelo y lo hemos compilado listo para un cálculo eficiente. Ahora es el momento de ejecutar el modelo en algunos datos. Podemos entrenar o ajustar nuestro modelo en nuestros datos cargados llamando a la función fit() en el modelo.
El proceso de entrenamiento se ejecutará para un número fijo de iteraciones a través del conjunto de datos llamado épocas, que debemos especificar usando el argumento epochs.
También podemos establecer el número de instancias que se evalúan antes de que se realice una actualización de peso en la red, denominada tamaño de batch, y se establece mediante el argumento batch_size.
Para este problema, realizaremos una pequeña cantidad de épocas (150) y usaremos un tamaño de batch relativamente pequeño de 16. Nuevamente, estos pueden elegirse experimentalmente por ensayo y error.
Keras puede separar una parte de sus datos de entrenamiento/validación y evaluar el rendimiento del modelo en cada época. Puede hacer esto configurando el argumento validation_split en la función fit() en un porcentaje del tamaño de su conjunto de datos de entrenamiento.
Por ejemplo, un valor razonable podría ser 0,2 o 0,33 para el 20% o el 33% de sus datos de entrenamiento para validación.
Al ejecutar el ejemplo, puede ver que la salida detallada en cada época muestra la pérdida y Accuracy tanto en el conjunto de datos de entrenamiento como en el conjunto de datos de validación.
Keras también le permite especificar manualmente el conjunto de datos que se utilizará para la validación durante el entrenamiento. En este ejemplo usamos la práctica función train_test_split() de la biblioteca de aprendizaje automático de Python scikit-learn para separar nuestros datos en entrenamiento/validación.
Usamos el 67% para entrenamiento y el 33% restante de los datos para validación. El conjunto de datos de validación se puede especificar a la función fit() en Keras mediante el argumento validation_data. Toma una tupla de los conjuntos de datos de entrada y salida.
Como antes, ejecutar el ejemplo proporciona una salida detallada del entrenamiento que incluye la pérdida y Accuracy del modelo en los conjuntos de datos de entrenamiento y validación para cada época.
El estándar de oro para la evaluación de modelos de aprendizaje automático es la validación cruzada de k-fold. Proporciona una estimación sólida del rendimiento de un modelo sobre datos no etiquetados.
La validación cruzada a menudo no se usa para evaluar modelos de aprendizaje profundo debido al mayor gasto computacional. Por ejemplo, la validación cruzada de k-fold se usa a menudo con 5 o 10 fold. Como tal, se deben construir y evaluar 5 o 10 modelos, lo que aumenta considerablemente el tiempo de evaluación de un modelo. Sin embargo, cuando el problema es lo suficientemente pequeño o si tiene suficientes recursos informáticos, la validación cruzada puede brindarle una estimación menos sesgada del rendimiento de su modelo.
En el siguiente ejemplo, usamos el práctico clase StratifiedKFold de scikit-learn para dividir el conjunto de datos de entrenamiento en 10 folds.
El ejemplo crea y evalúa 10 modelos utilizando las 10 divisiones de los datos y recopila todas las puntuaciones. La salida detallada para cada época se desactiva pasando verbose = 0 a las funciones fit() y evaluation() en el modelo. La desviación promedio y estándar del rendimiento del modelo se imprime al final de la ejecución para proporcionar una estimación del Accuracy del modelo.
Las clases KerasClassifier y KerasRegressor en Keras toman un argumento build_fn que es el nombre de la función a llamar para crear su modelo. Debes definir una función llamada lo que quieras que defina tu modelo, lo compile y lo devuelva. En el siguiente ejemplo,
Definimos una función create_model() que crea una red neuronal MLP.
Pasamos este nombre de función a la clase KerasClassifier mediante el argumento build_fn.
También pasamos argumentos adicionales de epochs = 150 y batch_size = 10. Estos se agrupan automáticamente y se pasan a la función fit() que es llamada internamente por la clase KerasClassifier.
Utilizamos la clase StratifiedKFold de Scikit-Learn con 10-fold.
Usamos la función scikit-learn cross_val_score() para evaluar nuestro modelo.
En este ejemplo, usamos GridSearchCV para evaluar diferentes configuraciones para nuestro modelo de red neuronal e informar sobre la combinación que proporciona el mejor rendimiento estimado.
La función create_model() está definida para tomar dos argumentos optimizer e init, los cuales deben tener valores predeterminados. Específicamente, los hiperparámetros a establecer serán:
Optimizadores para establecer los pesos.
Inicializadores para los pesos.
Número de épocas para entrenar el modelo.
Batchs para variar el número de muestras antes de las actualizaciones de peso.
Las opciones se especifican en un diccionario y se pasan a la configuración de la clase GridSearchCV.
Sección que dispondrá de una serie de recursos y enlaces interesantes para poder complementar eficazmente la formación del curso.
Como tenemos un problema de clasificación multiclase recordemos que debemos de utilizar One-Hot Encoding para poder formatear la salida.
Por ejemplo, en este problema los tres valores de clase:
Iris-setosa
Iris-versicolor
Iris-virginica
Por lo que convertimos esta salida en una codificación binaría como:
Iris-setosa, Iris-versicolor, Iris-virginica
1, 0, 0
0, 1, 0
0, 0, 1
Por tanto,
Codificando primero las cadenas de manera coherente en números enteros utilizando la clase LabelEncoder de scikit-learn.
Luego, conviertimos el vector de números enteros en One-Hot Enconding usando la función de Keras to_categorical().
A continuación se muestra el procedimiento a la hora de crear la función a trabajar:
Crea una red simple completamente conectada con una capa oculta de 8 neuronas.
La capa oculta utiliza una función de activación ReLu.
Debido a que utilizamos One-Hot Encoding, la capa de salida debe crear 3 valores de salida, uno para cada clase.
El valor de salida con el valor más grande se tomará como la clase predicha por el modelo. La topología quedaría así:
4 inputs -> [8 hidden nodes] -> 3 outputs
Tendremos una función de activación Softmax en la capa de salida.
Finalmente, la red utiliza Adam con una función de pérdida logarítmica (categorical_crossentropy).
En este problema vamos a utilizar un problema de clasificación binaria como es Sonar en el cual los resultados de Accuracy rondan el 84%.
Creemos un modelo de referencia y un resultado para este problema. Comenzaremos importando todas las clases y funciones que necesitaremos.
Para usar modelos de Keras con scikit-learn, debemos usar el contenedor KerasClassifier. También toma argumentos que pasará a la llamada a fit() como el número de épocas y el tamaño del batch.
Comencemos por definir la función que crea nuestro modelo de línea de base.
Tendrá una única capa oculta completamente conectada.
Se utilizara la función de activación ReLu.
La capa de salida contiene una sola neurona para hacer predicciones utilizando función de activación Sigmoidal.
Se usará la función de pérdida logarítmica binaria (binary_crossentropy).
Utilizar el algoritmo de optimización Adam y Accuracy como métrica.
La estandarización preserva las distribuciones gaussianas mientras normaliza las tendencias centrales para cada atributo. Para ello utilizamos StandardScaler de scikit-learn.
Es una buena práctica entrenar el procedimiento de estandarización en los datos de entrenamiento dentro de una ejecución de validación cruzada y usar la instancia de estandarización entrenada para preparar el fold de validación no etiquetada. Podemos lograr esto en scikit-learn usando una clase Pipeline.
Comencemos por definir la función que crea nuestro modelo de línea de base.
Tiene una sola capa oculta completamente conectada con el mismo número de neuronas que los atributos de entrada (13).
La red utiliza la función de activación ReLU para la capa oculta.
Al ser problema de regresión no tiene función de activación la capa de salida
Utiliza el algoritmo de optimización ADAM y se optimiza una función de pérdida de error cuadrático medio.
El objeto Wrapper para regresión se llama KerasRegressor.
Evaluamos este modelo de línea de base con 10-fold.
Comencemos por definir la función que crea nuestro modelo de línea de base.
Tiene una sola capa oculta completamente conectada con el mismo número de neuronas que los atributos de entrada (13).
La red utiliza la función de activación ReLU para la capa oculta.
Al ser problema de regresión no tiene función de activación la capa de salida
Utiliza el algoritmo de optimización ADAM y se optimiza una función de pérdida de error cuadrático medio.
El objeto Wrapper para regresión se llama KerasRegressor.
Evaluamos este modelo de línea de base con 10-fold.
Otro enfoque para aumentar la capacidad de representación del modelo es crear una red más amplia. Aquí, hemos aumentado el número de neuronas en la capa oculta en de 13 a 20. La topología de nuestra red más amplia se puede resumir de la siguiente manera:
13 entradas -> [20] -> 1 salida
Keras brinda la capacidad de describir cualquier modelo usando formato JSON con una función to_json(). Posteriormente, podemos cargarlo a través de model_from_json().
Los pesos se guardan directamente usando la función save_weights() y luego se cargan usando la función load_weights().
El siguiente ejemplo entrena y evalúa un modelo. Luego, la estructura del modelo se convierte a formato JSON con model.json en el directorio local. Los pesos de la red se escriben en model.h5.
Guardar el modelo incluye todo sobre el modelo, que incluye:
Pesos.
Arquitectura.
Detalles de compilación del modelo (pérdidas y métricas).
Estado del optimizador de modelo.
Esto significa que podemos cargar y usar el modelo directamente.
El punto de control puede usarse directamente o usarse como punto de partida para una nueva ejecución, retomando donde lo dejamos. Al entrenar modelos de aprendizaje profundo, el punto de control captura los pesos del modelo.
La clase ModelCheckpoint permite definir dónde controlar los pesos del modelo, cómo se debe nombrar el archivo y bajo qué circunstancias hacer un punto de control del modelo.
La instancia de ModelCheckpoint se puede pasar al proceso de entrenamiento al llamar a la función fit() en el modelo (Se deberá instalar h5py).
Los puntos de control están configurados para guardar los pesos de la red solo cuando hay una mejora en el Accuracy (monitor = 'val_accuracy' y mode = 'max').
Los pesos se almacenan en un archivo que incluye la puntuación en el nombre de archivo weights-improvement-epoch-val accuracy=.2f.hdf5.
Keras registra métricas de entrenamiento para cada época. Esto incluye la pérdida y el Accuracy (para problemas de clasificación). El histórico se devuelve de las llamadas a la función fit() utilizada para entrenar el modelo.
Las métricas se almacenan en un diccionario en el histórico del objeto devuelto:
# list all data in history
print(history.history.keys())
Por ejemplo, para un modelo en un problema de clasificación se produce la siguiente lista:
['loss', 'accuracy', 'val_loss', 'val_accuracy']
Podemos utilizar los datos recopilados para crear gráficas que nos proporciona información sobre:
La velocidad de convergencia sobre épocas (pendiente).
Si el modelo puede haber convergido ya (meseta).
Si el modelo tiene overfitting (inflexión para la línea de validación).
Dropout se implementa fácilmente seleccionando aleatoriamente los nodos que se eliminarán con una probabilidad determinada (por ejemplo, 20%) en cada ciclo de actualización de peso.
Los ejemplos utilizarán el conjunto de datos de clasificación binaria del conjunto de datos de Sonar.
El modelo de red neuronal de línea de base tiene:
Dos capas ocultas, la primera con 60 neuronas y la segunda con 30.
Gradiente Descendiente Estocástico se utiliza para el entrenamiento con una tasa de aprendizaje y momentum relativamente bajos.
Veamos los resultados de linea base sin Dropout.
Dropout se puede aplicar a las neuronas de entrada. En el siguiente ejemplo:
Agregamos una nueva capa de exclusión entre la entrada (o capa visible) y la primera capa oculta.
La tasa de Dropout se establece en 20%, i.e., una de cada cinco entradas se excluirá al azar.
Se impone una restricción en los pesos para cada capa oculta con la norma máxima de los pesos para que no exceda de 3.
Esto se hace estableciendo el argumento de kernel_constraint en el clase Dense al construir las capas.
Aumentamos la tasa de aprendizaje y momentum.
Vemoas el código
Dropout se aplica también a las capas ocultas. En el siguiente ejemplo:
Dropout se aplica entre las dos capas ocultas y entre la última capa oculta y la capa de salida.
Nuevamente, se usa una tasa de Dropout del 20%.
La adaptación más simple y quizás más utilizada de las tasas de aprendizaje durante el entrenamiento son las técnicas que reducen la tasa de aprendizaje con el tiempo. Estos tienen la ventaja de realizar grandes cambios al comienzo del procedimiento de entrenamiento cuando se utilizan valores de tasa de aprendizaje más grandes, y disminuyen la tasa de aprendizaje de manera que se realicen una tasa menor y, por lo tanto, actualizaciones de entrenamiento más pequeñas a los pesos más adelante en el procedimiento de entrenamiento.
Dos planificaciones de tasas de aprendizaje populares son:
Disminución de la tasa de aprendizaje gradualmente según la época.
Disminución de la tasa de aprendizaje usando grandes drops en épocas específicas.
La adaptación más simple y quizás más utilizada de las tasas de aprendizaje durante el entrenamiento son las técnicas que reducen la tasa de aprendizaje con el tiempo. Estos tienen la ventaja de realizar grandes cambios al comienzo del procedimiento de entrenamiento cuando se utilizan valores de tasa de aprendizaje más grandes, y disminuyen la tasa de aprendizaje de manera que se realicen una tasa menor y, por lo tanto, actualizaciones de entrenamiento más pequeñas a los pesos más adelante en el procedimiento de entrenamiento.
Dos planificaciones de tasas de aprendizaje populares son:
Disminución de la tasa de aprendizaje gradualmente según la época.
Disminución de la tasa de aprendizaje usando grandes drops en épocas específicas.
Sección que dispondrá de una serie de recursos y enlaces interesantes para poder complementar eficazmente la formación del curso.
Sesión de teoría - Background
Sesión de teoría - Fundamentos de las CNNs
Sesión de teoría - Operación Convolución
Sesión de teoría - Operación Pooling
Sesión de teoría - Capas Fully-Connected
Sesión de teoría - GPUs para mejorar el rendimiento
Sesión de teoría - Conclusiones sobre CNNs
Sección que dispondrá de una serie de recursos y enlaces interesantes para poder complementar eficazmente la formación del curso.
MNIST toma imágenes de dígitos de una variedad de documentos escaneados, normalizados en tamaño y centrados.
Cada imagen es está dada en blanco y negro con 28×28
píxeles (784 píxeles en total). Se usan 60,000 imágenes para entrenar un modelo y 10,000 imágenes para validarlo.
Es una tarea de reconocimiento de dígitos. Como tal, hay 10 dígitos (0 a 9) o 10 clases para predecir.
En la página web de Rodrigo Benenson hay una lista de los resultados más avanzados y enlaces a los artículos relevantes sobre el MNIST y otros conjuntos de datos.
Vamos a definir nuestro modelo:
El número de entradas será el tamaño máximo de pixeles (784)
Tendrá una capa oculta con el mismo número de neuronas que entradas (784).
Se utiliza una función de activación ReLU en la capa oculta.
Se utiliza una función de activación Softmax en la capa de salida.
La función de pérdida será categorical_crossentropy.
Utilizaremos ADAM para aprender los pesos.
A continuación, definimos nuestro modelo de red neuronal:
La primera capa oculta es una capa convolucional llamada Conv2D.
Tiene 32 mapas de características, con un tamaño de 5×5 y una función de activación ReLu.
Capa Pooling MaxPooling2D.
Tamaño de pacht de 2×2
Capa de regularización Dropout.
Capa Flatten para conversión de la matriz 2D en un vector (1D).
Capa Dense con 128 neuronas y la función de activación ReLU.
Capa de salida con 10 neuronas para las 10 clases y una función de activación Softmax.
La compilación con ADAM, pérdida logarítmica como función de coste y Accuracy como métrica.
Esta vez definimos una arquitectura con más capas de convolucionales, Max-pooling y capas completamente conectadas.
Capa convolucional con 30 mapas de tamaño 5×5
Capa de Pooling con patch de 2×2
Capa convolucional con 15 mapas de tamaño 3×3
Capa de Pooling con patch de 2×2
Capa de Dropout del 20%.
Capa Flatten.
Capa completamente conectada con 128 neuronas y ReLu.
Capa completamente conectada con 50 neuronas y ReLu
Capa de salida con activación Softmax.
La compilación con ADAM, pérdida logarítmica como función de coste y Accuracy como métrica.
Keras proporciona la clase ImageDataGenerator para la preparación y el aumento de datos de imágenes. Esto incluye capacidades como:
Estandarización de características.
Blanqueamiento ZCA.
Rotación aleatoria, cambios y volteos.
Reordenamiento de dimensiones.
Guardar las imágenes aumentadas en el disco.
También es posible estandarizar los valores de los píxeles en todo el conjunto de datos.
Los valores de los píxeles están estandarizados en todas las muestras (todas las imágenes del conjunto de datos). En este caso, cada imagen se considera una característica.
Podemos realizar la estandarización estableciendo los argumentos de featurewise_center y featurewise_std_normalization en la clase ImageDataGenerator.
Una transformación de blanqueamiento de una imagen es una operación de álgebra lineal que reduce la redundancia en la matriz de imágenes de píxeles.
ZCA muestra mejores resultados y resultados en imágenes transformadas que mantienen todas las dimensiones originales y, a diferencia de PCA, las imágenes transformadas resultantes todavía se ven como sus originales.
Para realizar ZCA configuramos el argumento zca_whitening en True.
A veces, las imágenes de los datos de muestra pueden tener rotaciones diferentes y variables en la escena.
Podemos crear rotaciones aleatorias de los dígitos MNIST hasta 90 grados estableciendo el argumento rotation_range.
Keras admite cambios aleatorios horizontales y verticales mediante los argumentos width_shift_range y height_shift_range
El directorio, el prefijo del nombre de archivo y el tipo de archivo de imagen se pueden especificar en la función flow() antes del entrenamiento.
El siguiente ejemplo demuestra esto y escribe 9 imágenes en un subdirectorio Img con el prefijo aug y el tipo de archivo PNG.
El Instituto Canadiense de Investigación Avanzada (CIFAR, por sus siglas en inglés) desarrolló un conjunto de datos estándar de visión artificial y Deep Learning para este problema.
El conjunto de datos CIFAR-10 consta de 60.000 fotos divididas en 10 clases. Las clases incluyen objetos comunes como aviones, automóviles, pájaros, gatos, etc. El conjunto de datos se divide en 50.000 imágenes para train y 10.000 para test. Las fotos son en color con canales rojo, verde y azul, por lo que tienen un tamaño de 32×32×3
píxeles.
Nuestra estructura de red de referencia se puede resumir:
Capa de entrada convolucional, 32 mapas de características con un tamaño de 3×3, una función de activación ReLU y una restricción de peso de la norma máxima establecida en 3.
Capa Dropout en 20%.
Capa convolucional, 32 mapas de características con un tamaño de 3×3, una función de activación ReLU y una restricción de peso de la norma máxima establecida en 3.
Capa Max Pool con el tamaño 2×2
Aplanar la capa.
Capa totalmente conectada con 512 neuronas y función de activación ReLU.
Capa Dropout en 50%.
Capa de salida totalmente conectada con 10 unidades y función de activación Softmax.
Finalmente, se utiliza una función de pérdida logarítmica con un SGD con un gran momentum y peso decay, comenzando con una tasa de aprendizaje de 0,01.
En esta sección, analizaremos la ampliación del tamaño y la complejidad de nuestro modelo. Podemos introducir una ronda adicional de convoluciones con muchos más mapas de características. Usaremos el mismo patrón de capas convolucional, Dropout, convolucional y de Max-Pooling.
Podemos resumir una nueva arquitectura de red como:
Capa de entrada convolucional, 32 mapas de 3×3
y función de activación ReLU.
Capa Dropout al 20%.
Capa convolucional, 32 mapas de 3×3 y una función de activación ReLU.
Capa Max-Pooling de 2×2.
Capa convolucional, 64 mapas de 3×3 y función de activación ReLU.
Capa Dropout al 20%.
Capa convolucional, 64 mapas de 3×3 y función de activación ReLU.
Capa Max-Pooling de 2×2.
Capa convolucional, 128 mapas de 3×3 y función de activación ReLU.
Capa Dropout al 20%.
Capa convolucional, 128 de 3×3 y función de activación ReLU.
Capa Max-Pooling de 2×2.
Aplanar la capa.
Capa Dropout al 20%.
Capa totalmente conectada con 1.024 neuronas y función de activación ReLU.
Capa Dropout al 20%.
Capa totalmente conectada con 512 neuronas y función de activación ReLU.
Capa Dropout al 20%.
Capa de salida totalmente conectada con 10 unidades y función de activación Softmax.
La función imdb.load_data() permite cargar y descargar (la primera vez) IMDB. Lo almacenará en su directorio personal en ~/.keras/datasets/imdb.pkl como un archivo de 32 megabytes.
Las oraciones de cada revisión se componen de una secuencia de números enteros.
De manera útil, la función imdb.load data() proporciona argumentos adicionales, como:
El número de palabras principales para cargar.
El número de palabras principales para omitir (como "the's")
La duración máxima de las revisiones.
Un avance reciente en el campo del NLP es la incrustación de palabras (word embeddings).
Se trata de una técnica en la que las palabras se codifican como vectores de valor real en un espacio de alta dimensión, donde la similitud entre palabras en términos de significado se traduce en cercanía en el espacio vectorial.
Las palabras discretas se asignan a vectores de números continuos.
Keras proporciona una forma conveniente de convertir representaciones enteras positivas de palabras en una incrustación de palabras mediante una capa Embedding que toma argumentos que:
Definen el mapeo, incluido el número máximo de palabras esperadas, también llamado tamaño de vocabulario.
También le permite especificar la dimensionalidad de cada vector de palabra, denominada dimensión de salida.
Supongamos que solo nos interesan las primeras 5,000 palabras más utilizadas en el conjunto de datos. Por lo tanto:
Nuestro tamaño de vocabulario será de 5,000.
Podemos optar por utilizar un vector de 32 dimensiones para representar cada palabra.
Finalmente, podemos optar por limitar la extensión máxima de la reseña a 500 palabras, truncando las reseñas más largas y rellenando las reseñas más cortas con valores 0.
Ahora podemos definir nuestro modelo de red neuronal convolucional. Esta vez:
Después de la capa de entrada Embedding, insertamos una capa Conv1D.
Esta capa convolucional tiene 32 mapas de características y lee representaciones de palabras embebidas 3 elementos vectoriales de la palabra embebida a la vez.
Capa MaxPooling1D de 2x2.
El resto de la red es igual que la red neuronal anterior.
Sección que dispondrá de una serie de recursos y enlaces interesantes para poder complementar eficazmente la formación del curso.
Deep Learning con Python y Keras. Redes Neuronales avanzado.
Dominando el Aprendizaje Profundo con Keras en Python: Desarrollo y Evaluación de Modelos Neuronales de 0 a experto.
Instructor: PhD. Manuel Castillo-Cara
Requisitos previos: Se recomienda tener conocimientos sobre Machine Learning. Se recomienda realizar previamente siguiente curso de Udemy:
Machine Learning con Python. Aprendizaje Automático Avanzado - Aprendizaje Automático Scikit-Learn en Python. Modelos Predictivos. Data Science. De básico a Experto.
Descripción del Curso:
Bienvenido al curso de Deep Learning con Python y Keras. En este curso trataremos la librería Keras de Python para Deep Learning y cómo usarla para desarrollar y evaluar modelos de Deep Learning. En este curso, descubriremos las técnicas, código y habilidades de Deep Learning que luego puede llevar a sus propios proyectos de Machine Learning.
Si está interesado en Deep Learning, tenemos que comenzar por desarrollar y evaluar modelos de Deep Learning. Luego, si descubres que realmente le gusta o tienes una habilidad especial para ello, más adelante podrás profundizar más en los antecedentes y la teoría, según lo necesites para ayudarte a desarrollar mejores y más valiosos resultados.
En este contexto, para este curso se ha escogido la mejor plataforma para comenzar y desarrollar muy rápidamente modelos de Deep Learning potentes a través de la librería Keras de Python.
La librería Keras envuelve la complejidad de la computación numérica de Theano y TensorFlow proporcionando una API concisa que usaremos para desarrollar nuestra propia red neuronal y modelos Deep Learning. Además, trataremos las habilidades de Deep Learning para llevar esta nueva tecnología asombrosa a nuestros propios proyectos.
El curso está dirigido a personas que tengan conocimientos de Machine Learning, conocimientos intermedios del lenguaje de programación y que quieran adentrarse a este apasionante mundo de dentro del campo de Deep Learning y redes neuronales.
Contenidos del Curso:
MÓDULO I. Fundamentos de Deep Learning.
Conceptos básicos de Deep Learning.
Jupyter Notebook como nuestro entorno de trabajo.
Google Colab como nuestro entorno de trabajo.
Curso rápido de Python, TensorFlow, Keras.
MÓDULO II. Redes Neuronales.
Curso sobre Multilayer Perceptron
Desarrollar nuestra primera red neuronal con Keras.
Evaluar el rendimiento de los modelos.
Utilice modelos de Keras con Scikit-Learn para Machine Learning.
Proyecto: Problema de clasificación multiclase.
Proyecto: Problema de clasificación binaria.
Proyecto: Problema de regresión.
MODULO III. Redes Neuronales Avanzadas
Guardar modelos para hacer predicciones.
Mantener puntos de control en el entrenamiento de los modelos.
Comprender el comportamiento del modelo durante el entrenamiento trazando el historial.
Reducir el sobreajuste con la regularización Dropout.
Optimizar el rendimiento con una planificación basada en la tasa de aprendizaje.
MÓDULO IV. Redes Neuronales Convolucionales
Curso intensivo en redes neuronales convolucionales.
Optimizar el rendimiento del modelo con Data Augmentation.
Proyecto: Reconocimiento de dígitos manuscritos.
Proyecto: Reconocimiento de objetos en fotografías.
Proyecto: Clasificación de opiniones en revisión de películas.
MÓDULO V. Redes Neuronales Recurrentes
Curso intensivo en redes neuronales recurrentes.
Modelos de perceptrones multicapa para problemas de series de tiempo.
Modelos LSTM para problemas de series temporales.
Comprensión del estado en modelos LSTM para predicción de secuencias.
Proyecto: Clasificación secuencial de reseñas de películas.
Proyecto: Generación de texto con Alicia en el país de las maravillas.
Actividad virtual
Sesiones de videoconferencias
Análisis de casos
Foros de discusión
Trabajos parciales de los módulos
Examen tipo test
Lecturas comentadas y
Búsquedas de información científica.
Procedimiento de la formación:
La formación te permitirá convertirte en un experto en la materia, y todo ello desde una formación principalmente práctica. A través de variadas actividades y proyectos completos podrás adquirir los conocimientos suficientes para ejercer profesionalmente de forma solvente. Además conocerás en detalle mi flujo de trabajo a la hora de afrontar un proyecto profesional. Para la realización de este curso no vas a necesitar el equipo informático más potente del mercado, ya que el software empleado durante formación online se encuentra perfectamente optimizado y su uso es muy fluido en todo tipo de equipos, tanto en PC como en Mac.
El aprendizaje será un proceso continuo donde los estudiantes tienen la oportunidad de ir trabajando con el editor de texto practicando lo expuesto en la parte de teoría.
Puedes elegir ver todas las lecciones de forma secuencial (lineal) y aprovecharlas al máximo la formación. Pero también puedes decidir ver este curso como una guía de referencia. Las clases están claramente organizadas en secciones lógicas y puedes decidir visualizar solo las clases que te resulten más importantes según tus necesidades formativas. A excepción de las lecciones PRO, la mayoría de las lecciones son independientes para que puedas comprender los conceptos de cada lección sin tener que ver las lecciones anteriores del curso.
Es excepcional el aumento en la demanda de profesionales en este ámbito por parte de las empresas de todo el mundo actualmente. Para desarrollar el programa formativo propuesto no ser requieren grandes conocimientos previos, ya que la formación se acomete desde un nivel de usuario 0. El curso está orientado a aquellos creativos que quieran ampliar sus skills (habilidades) y conocer múltiples trucos, consejos, recursos y recomendaciones, de la mano del instructor Dr. Manuel Castillo-Cara. Además todas las formaciones de Udemy disponen acceso automático al curso, sin limitación de tiempo, disponibilidad 24/7 (24 horas al día los 7 días de la semana), sin caducidad y con garantía de devolución.
Características del Curso:
Recuerda que esta formación incluye lecciones en vídeo fullHD con audio de estudio (compatible con TV, PC, Mac, tablet y smartphone), artículos didácticos, actividades, proyectos paso a paso, recursos descargables, links de interés, acceso de por vida, certificado de finalización, tutorización online, y una exclusiva comunidad de aprendizaje privada que nos ayudamos aportando nuestras experiencias en el foro de comunicación del curso.
¿A qué esperas?, este curso es ideal para ti, atrévete a convertirte en un experto. Adelante, nos vemos dentro de la formación ;)