modelo de aprendizaje profundo en python con keras

Contenidos

Este artículo fue publicado como parte del Blogatón de ciencia de datos

Introducción

Una red neuronal artificial es un subcampo de la inteligencia artificial compilado bajo las redes neuronales de aprendizaje profundo que intenta imitar la red de neuronas que hace el cerebro humano, lo que les permite comprender y responder como un humano.

44394first20keras20model20feature20img-2377445

Tabla de contenido

  • Descripción general de la red neuronal
  • Introducción a Keras
  • Implementación paso a paso de su primer modelo de Keras
  • Combinando todo el código
  • EndNote

Breve descripción de la red neuronal

La red neuronal consta de un conjunto más grande de neuronas, que se denominan unidades dispuestas en capas. En palabras simples, Neural Network está diseñado para realizar una tarea más compleja donde los algoritmos de Machine Learning no encuentran su uso y no logran el rendimiento requerido.

Las redes neuronales se utilizan para realizar muchas tareas complejas, incluida la clasificación de imágenes, la detección de objetos, la identificación de rostros, el resumen de texto, el reconocimiento de voz y la lista es interminable.

¿Cómo aprenden las redes neuronales características complejas? Una red neuronal tiene muchas capas y cada capa realiza una función específica y compleja la red. Cuanto más capas son, más rendimiento se recibe. Es por eso que la red neuronal también se llama perceptrón multicapa.

Introducción a la biblioteca de Kears

Keras es una biblioteca de redes neuronales rápida, de código abierto y fácil de usar escrita en Python que se ejecuta en la parte superior de Theano o Tensorflow. Tensorflow proporciona API tanto de bajo nivel como de alto nivel; de hecho, Keras solo proporciona API de alto nivel.

Como principiante, se recomienda trabajar primero con Keras y luego pasar a TensorFlow. La razón es que usar las funciones de Tensorflow como principiante es un poco complejo de entender e interpretar, pero la funcionalidad de Keras es simple.

Cree su primer modelo de red neuronal con Keras

Construiremos una red neuronal artificial simple usando Keras paso a paso que lo ayudará a crear su propio modelo en el futuro.

Paso 1) Cargar datos

Vamos a utilizar los datos de diabetes de los indios Pima que puede descargar de aquí. Es un conjunto de datos simple proporcionado por el conjunto de datos de UCI Machine Learning, que contiene un registro médico de pacientes indios. Tenemos que predecir si el paciente tiene una aparición de diabetes dentro de los 5 años.

import pandas as pd
data = pd.read_csv('diabetes.csv')
x = data.drop("Outcome", axis=1)
y = data["Outcome"]
25441diabetes_dataset_img-8297579

Es un problema de clasificación binaria donde tenemos que decir si su inicio de diabetes es 1 o no como 0. Todas las columnas son numéricas, lo que facilita la creación directa de una red neuronal sobre ella. Por lo tanto, hemos separado los datos independientes y dependientes.

Paso 2) Definir el modelo de Keras

El modelo en Keras siempre se define como una secuencia de capas. Significa que inicializamos el modelo de secuencia y agregamos las capas una tras otra que se ejecuta como la secuencia de la lista. Prácticamente tenemos que intentar experimentar con el proceso de agregar y quitar las capas hasta que estemos contentos con nuestra arquitectura.

Lo que debe cuidar es que la primera capa tiene el número correcto de características de entrada que se especifica usando el input_dim parámetro. podemos especificar el número de neuronas como primer argumento de una capa. para definir la función de activación utilice el argumento de activación.

En este ejemplo, definiremos una red completamente conectada con tres capas. Para definir la capa completamente conectada, use la clase Densa de Keras.

  • La primera capa tiene 12 neuronas y función de activación como relu
  • La segunda capa oculta tiene 8 neuronas y la función de activación como relu
  • Finalmente, en la capa de salida, usamos 1 unidad y activación como sigmoide porque es un problema de clasificación binaria.
from keras.models import Sequential
from keras.layers import Dense
model = Sequential()
model.add(Dense(12, input_dim=8, activation="relu"))
model.add(Dense(12, activation="relu"))
model.add(Dense(1, activation="sigmoid"))

Recuerde especificar la forma correcta de los datos en la primera capa conocida como capa de entrada.

Paso 3) Compilar el modelo de Keras

Cuando compilamos el modelo de Keras, utiliza las bibliotecas numéricas de backend como TensorFlow o Theano. Cualquiera que sea el backend que esté utilizando, elige automáticamente la mejor manera de representar la red en su hardware, como CPU, GPU o TPU.

Cuando compilamos el modelo, debemos especificar algunos parámetros adicionales para evaluar mejor el modelo y encontrar el mejor conjunto de ponderaciones para asignar entradas a salidas.

  1. Función de pérdida: se debe especificar la función de pérdida para evaluar el conjunto de pesos en el que se mapeará el modelo. Usaremos la entropía cruzada como una función de pérdida que en realidad se conoce como entropía cruzada binaria utilizada para la clasificación binaria.
  2. Optimizador: el segundo es el optimizador para optimizar la pérdida. Usaremos adam, que es una versión popular del descenso de gradientes y da el mejor resultado en la mayoría de los problemas.
model.compile(loss="binary_crossentropy", optimizer="adam", metrics=["accuracy"])

Paso 4) Comience a entrenar (ajuste el modelo)

Después de la compilación exitosa del modelo, estamos listos para ajustar los datos al modelo y comenzar a entrenar la red neuronal. Además de proporcionar datos para modelar, necesitamos definir una cantidad de épocas y un tamaño de lote en el que se produce el entrenamiento.

  • Epoch: una sola pasada a través de todas las filas del conjunto de datos de entrenamiento
  • Tamaño de lote: número de muestras consideradas por el modelo antes de actualizar los pesos.
model.fit(x,y, epochs=150, batch_size=10)

Una época puede estar compuesta por más de un lote. Estos parámetros se deciden finalmente después del método de prueba y calor.

Paso 5) Evaluar el modelo

Después de entrenar el modelo, conozcamos el rendimiento de una red neuronal. El modelo siempre se evalúa en un conjunto de prueba. En este ejemplo, por simplicidad, hemos entrenado en un conjunto de datos completo, pero mientras trabaja en cualquier proyecto, básicamente divide los datos y entrena la red.

_, accuracy = model.evaluate(x, y)
print("Model accuracy: %.2f"% (accuracy*100))

Para evaluar el modelo, utilice el método de evaluación y pase la entrada y la salida al modelo y verifique el rendimiento.

Paso 6) Hacer predicciones

predecir la salida de nuevos datos simplemente usando el método de predicción. tenemos una declaración de problema de clasificación binaria, por lo que la salida será simplemente 0 o 1.

predictions = model.predict(x)
print([round(x[0]) for x in predictions])

Alternativamente, también puede utilizar el predecir_clases función para predecir directamente las clases.

Eso está resuelto, hemos creado fácilmente una red neuronal con 3 capas usando solo unas pocas líneas de código con Keras.

Compilar todo el código junto

model = Sequential()  #define model
model.add(Dense(12, input_dim=8, activation="relu"))
model.add(Dense(8, activation="relu"))
model.add(Dense(1, activation="sigmoid"))
model.compile(loss="binary_crossentropy", optimizer="adam", metrics=["accuracy"]) #compile model
model.fit(x,y, epochs=150, batch_size=10)  #training
_, accuracy = model.evaluate(x,y)    #testing
print("Model accuracy: %.2f"% (accuracy*100))
predictions = model.predict(x)     #make predictions
#round the prediction
rounded = [round(x[0]) for x in predictions]

EndNote

Una red neuronal construye una red de capas conectadas con múltiples neuronas en cada capa. A medida que aumentamos el número de capas, la red es capaz de aprender características más complejas.

Ha creado fácilmente su primer modelo de red neuronal con Keras. Espero que haya sido fácil de captar todas las cosas. Si tiene alguna pregunta, por favor coméntela. Estaré encantado de ayudarte.

Si te gusta el artículo, echa un vistazo a mis otros artículos. Enlace

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.