Saltar al contenido

Cómo construir modelos de red neuronal Perceptron multicapa con Keras

2 de julio de 2022

Última actualización el 23 de junio de 2022

La biblioteca Keras Python para el aprendizaje profundo se centra en la creación de modelos como una secuencia de capas.

En esta publicación, descubrirá los componentes simples que puede usar para crear redes neuronales y modelos simples de aprendizaje profundo usando Keras de TensorFlow.

Pon en marcha tu proyecto con mi nuevo libro Aprendizaje profundo con Python, que incluye tutoriales paso a paso y el Código fuente de Python archivos para todos los ejemplos.

Empecemos.

  • mayo 2016: Primera versión
  • Actualización Mar/2017: ejemplo actualizado para Keras 2.0.2, TensorFlow 1.0.1 y Theano 0.9.0.
  • Actualización jun/2022: Código actualizado a TensorFlow 2.x. Actualizar enlaces externos.

Cómo construir modelos de red neuronal Perceptron multicapa con Keras
Foto de George Rex, algunos derechos reservados.

Modelos de redes neuronales en Keras

El enfoque de la biblioteca Keras es un modelo.

El modelo más simple se define en la clase Sequential, que es una pila lineal de capas.

Puede crear un modelo secuencial y definir todas las capas en el constructor, por ejemplo:

de tensorflow.queras.modelos importar Secuencial

modelo = Secuencial(...)

Una expresión más útil es crear un modelo secuencial y agregar sus capas en el orden del cálculo que desea realizar, por ejemplo:

de tensorflow.queras.modelos importar Secuencial

modelo = Secuencial()

modelo.agregar(...)

modelo.agregar(...)

modelo.agregar(...)

Entradas del modelo

La primera capa de su modelo debe especificar la forma de la entrada.

Este es el número de atributos de entrada y está definido por el argumento input_dim. Este argumento espera un número entero.

Por ejemplo, puede definir la entrada en términos de 8 entradas para una capa de tipo Densa de la siguiente manera:

Capas de modelo

Las capas de diferente tipo tienen algunas propiedades en común, específicamente su método de inicialización de peso y funciones de activación.

Inicialización de peso

El tipo de inicialización utilizada para una capa se especifica en el argumento init.

Algunos tipos comunes de inicialización de capas incluyen:

  • uniforme“: Los pesos se inicializan en pequeños valores uniformemente aleatorios entre 0 y 0,05.
  • normal“:Los pesos se inicializan en valores aleatorios gaussianos pequeños (media cero y desviación estándar de 0,05).
  • cero“: Todos los pesos se establecen en valores cero.

Puede ver una lista completa de técnicas de inicialización admitidas en la página Uso de inicializaciones.

Función de activación

Keras admite una variedad de funciones de activación de neuronas estándar, como: softmax, lineal rectificado, tanh y sigmoide.

Recomendado:  La herramienta emergente AI CT puede proporcionar un complemento viable para la clasificación Lung-RADS

Por lo general, especifica el tipo de función de activación utilizada por una capa en el argumento de activación, que toma un valor de cadena.

Puede ver una lista completa de las funciones de activación admitidas por Keras en la página Uso de activaciones.

Curiosamente, también puede crear un objeto Activación y agregarlo directamente a su modelo después de su capa para aplicar esa activación a la salida de la Capa.

Tipos de capa

Hay una gran cantidad de tipos de capas centrales para redes neuronales estándar.

Algunos tipos de capas comunes y útiles que puede elegir son:

  • Denso: capa totalmente conectada y el tipo de capa más común utilizado en modelos de perceptrón multicapa.
  • Abandonar: Aplicar abandono al modelo, estableciendo una fracción de entradas a cero en un esfuerzo por reducir el sobreajuste.
  • Concatenar: Combine las salidas de múltiples capas como entrada a una sola capa.

Puede obtener información sobre la lista completa de capas principales de Keras en la página Capas principales

Compilación de modelos

Una vez que haya definido su modelo, necesita ser compilado.

Esto crea las estructuras eficientes que usa TensorFlow para ejecutar su modelo de manera eficiente durante el entrenamiento. Específicamente, TensorFlow convierte tu modelo en un gráfico para que el entrenamiento se pueda realizar de manera eficiente.

Compile su modelo usando la función compile() y acepta tres atributos importantes:

  1. Optimizador de modelos.
  2. Función de pérdida.
  3. Métrica.

modelo.compilar(optimizador=..., pérdida=..., métrica=...)

1. Optimizadores de modelos

El optimizador es la técnica de búsqueda utilizada para actualizar los pesos en su modelo.

Puede crear un objeto optimizador y pasarlo a la función de compilación a través del argumento del optimizador. Esto le permite configurar el procedimiento de optimización con sus propios argumentos, como la tasa de aprendizaje. Por ejemplo:

de tensorflow.queras.optimizadores importar EUR

sgd = EUR(...)

modelo.compilar(optimizador=sgd)

También puede utilizar los parámetros predeterminados del optimizador especificando el nombre del optimizador en el argumento del optimizador. Por ejemplo:

modelo.compilar(optimizador=‘sgd’)

Algunos optimizadores de descenso de gradiente populares entre los que puede elegir incluyen:

  • EUR: descenso de gradiente estocástico, con soporte para impulso.
  • RMSprop: método de optimización de la tasa de aprendizaje adaptativo propuesto por Geoff Hinton.
  • Adán: Estimación de momento adaptativo (Adam) que también utiliza tasas de aprendizaje adaptativo.
Recomendado:  Optimización de funciones con SciPy

Puede obtener información sobre todos los optimizadores admitidos por Keras en la página Uso de optimizadores.

Puede obtener más información sobre los diferentes métodos de descenso de gradiente en la sección Algoritmos de optimización de descenso de gradiente de la publicación de Sebastian Ruder Una descripción general de los algoritmos de optimización de descenso de gradiente.

2. Funciones de pérdida del modelo

La función de pérdida, también llamada función objetivo, es la evaluación del modelo utilizado por el optimizador para navegar por el espacio de pesos.

Puede especificar el nombre de la función de pérdida para usar en la función de compilación mediante el argumento de pérdida. Algunos ejemplos comunes incluyen:

  • mse‘: para el error cuadrático medio.
  • entropía_cruzada_binaria‘: para pérdida logarítmica binaria (logloss).
  • categorical_crossentropy‘: para pérdida logarítmica multiclase (logloss).

Puede obtener más información sobre las funciones de pérdida admitidas por Keras en la página Pérdidas.

3. Métricas del modelo

El modelo evalúa las métricas durante el entrenamiento.

Solo se admite una métrica en este momento y es la precisión.

Entrenamiento modelo

El modelo se entrena en arreglos NumPy usando la función fit(), por ejemplo

modelo.adaptar(X, y, épocas=..., tamaño del lote=...)

El entrenamiento especifica el número de épocas en las que entrenar y el tamaño del lote.

  • Epochs (nb_epoch) es la cantidad de veces que el modelo se expone al conjunto de datos de entrenamiento.
  • Tamaño de lote (batch_size) es el número de instancias de entrenamiento que se muestran al modelo antes de que se realice una actualización de peso.

La función de ajuste también permite una evaluación básica del modelo durante el entrenamiento. Puede establecer el valor de validation_split para retener una fracción del conjunto de datos de entrenamiento para que la validación se evalúe cada época, o proporcionar una tupla de validación_datos de (X, y) de datos para evaluar.

Ajustar el modelo devuelve un objeto de historial con detalles y métricas calculadas para el modelo en cada época. Esto se puede utilizar para representar gráficamente el rendimiento del modelo.

Predicción del modelo

Una vez que haya entrenado su modelo, puede usarlo para hacer predicciones sobre datos de prueba o datos nuevos.

Hay varios tipos de salida diferentes que puede calcular a partir de su modelo entrenado, cada uno calculado usando una llamada de función diferente en su objeto de modelo. Por ejemplo:

  • modelo.evaluar(): Para calcular los valores de pérdida para los datos de entrada.
  • modelo.predecir(): para generar una salida de red para los datos de entrada.
  • modelo.predecir_clases(): Para generar salidas de clase para datos de entrada.
  • modelo.predecir_proba(): Para generar probabilidades de clase para los datos de entrada.
Recomendado:  Uso de circunvoluciones separables en profundidad en Tensorflow

Por ejemplo, en un problema de clasificación, usará la función predict_classes() para hacer predicciones para datos de prueba o nuevas instancias de datos.


¿Necesita ayuda con Deep Learning en Python?

Tome mi curso de correo electrónico gratuito de 2 semanas y descubra MLP, CNN y LSTM (con código).

Haga clic para registrarse ahora y también obtenga una versión gratuita de Ebook en PDF del curso.


Resumir el modelo

Una vez que esté satisfecho con su modelo, puede finalizarlo.

Es posible que desee generar un resumen de su modelo. Por ejemplo, puede mostrar un resumen de un modelo llamando a la función de resumen, por ejemplo:

También puede recuperar un resumen de la configuración del modelo utilizando la función get_config(), por ejemplo:

Finalmente, puede crear una imagen de la estructura de su modelo directamente. Por ejemplo:

de queras.útiles.vis_utils importar modelo_parcela

gráfico(modelo, archivar=‘modelo.png’)

Recursos

Puede obtener más información sobre cómo crear redes neuronales simples y modelos de aprendizaje profundo en Keras utilizando los siguientes recursos:

Resumen

En esta publicación, descubrió la API de Keras que puede usar para crear redes neuronales artificiales y modelos de aprendizaje profundo.

Específicamente, aprendió sobre el ciclo de vida de un modelo de Keras, que incluye:

  • Construcción de un modelo.
  • Crear y agregar capas, incluida la inicialización y activación del peso.
  • Compilación de modelos que incluyen método de optimización, función de pérdida y métricas.
  • Modelos de ajuste que incluyen épocas y tamaño de lote
  • Modelo de predicciones.
  • Resumiendo el modelo.

Si tiene alguna pregunta sobre Keras para aprendizaje profundo o esta publicación, pregúntela en los comentarios y haré todo lo posible para responderla.

¡Desarrolle proyectos de aprendizaje profundo con Python!

Aprendizaje profundo con Python

¿Qué pasaría si pudiera desarrollar una red en minutos?

…con solo unas pocas líneas de Python

Descubre cómo en mi nuevo Ebook:
Aprendizaje profundo con Python

Cubre proyectos de principio a fin sobre temas como:
Perceptrones multicapa, Redes convolucionales y Redes neuronales recurrentesy más…

Finalmente lleve el aprendizaje profundo a
Tus propios proyectos

Sáltate los académicos. Solo Resultados.

Ver lo que hay dentro