Keras para R

publicado en: rstudio | 0

Nos complace anunciar que el paquete de keras ya está disponible en CRAN. El paquete proporciona una interfaz R a Keras, una API de redes neuronales de alto nivel desarrollada con el objetivo de permitir una rápida experimentación. Keras tiene las siguientes características clave:

  • Permite que el mismo código se ejecute en la CPU o en la GPU, sin problemas.

  • API fácil de usar que facilita la creación rápida de prototipos de modelos de aprendizaje profundo.

  • Soporte incorporado para redes convolucionales (para visión por computadora), redes recurrentes (para procesamiento de secuencias) y cualquier combinación de ambas.

  • Soporta arquitecturas de red arbitrarias: modelos multientrada o multisalida, compartición de capas, compartición de modelos, etc. Esto significa que Keras es apropiado para construir esencialmente cualquier modelo de aprendizaje profundo, desde una red de memoria hasta una máquina neural Turing.

  • Es capaz de funcionar en la parte superior de múltiples back-ends incluyendo TensorFlow, CNTK, o Theano.

Si ya estás familiarizado con Keras y quieres entrar de lleno, visita https://keras.rstudio.com que tiene todo lo que necesitas para empezar, incluyendo más de 20 ejemplos completos de los que aprender.

Para saber un poco más sobre Keras y por qué estamos tan emocionados de anunciar la interfaz de Keras para R, ¡sigue leyendo!

Keras y el aprendizaje profundo

El interés por el aprendizaje profundo se ha acelerado rápidamente en los últimos años, y han surgido varios marcos de aprendizaje profundo en el mismo período de tiempo. De todos los marcos disponibles, Keras se ha destacado por su productividad, flexibilidad y su API de fácil uso. Al mismo tiempo, TensorFlow ha surgido como una plataforma de aprendizaje automático de próxima generación que es a la vez extremadamente flexible y bien adaptada al despliegue de la producción.

No es sorprendente que Keras y TensorFlow se hayan alejado últimamente de otros marcos de aprendizaje profundo:

La buena noticia sobre Keras y TensorFlow es que no tienes que elegir entre ellos. El backend por defecto de Keras es TensorFlow y Keras se puede integrar perfectamente con los flujos de trabajo de TensorFlow. También hay una implementación de TensorFlow puro de Keras con una integración más profunda en la hoja de ruta para más adelante este año.

Keras y TensorFlow son el estado del arte en herramientas de aprendizaje profundo y con el paquete de Keras ahora puedes acceder a ambos con una interfaz R fluida.

Empezando

Instalación

Para empezar, instala el paquete keras R de CRAN de la siguiente manera:

install.packages("keras")

La interfaz del Keras R utiliza el motor de backend TensorFlow por defecto. Para instalar tanto la librería del núcleo de Keras como el backend TensorFlow usa la función install_keras():

biblioteca(keras)
instalar_keras()

Esto le proporcionará instalaciones por defecto basadas en la CPU de Keras y TensorFlow. Si usted quiere una instalación más personalizada, por ejemplo, si quiere aprovechar las ventajas de las GPU NVIDIA, vea la documentación de install_keras().

Ejemplo MNIST

Podemos aprender lo básico de Keras caminando a través de un ejemplo simple: reconocer los dígitos escritos a mano del conjunto de datos del MNIST. El MNIST consiste en 28 x 28 imágenes en escala de grises de dígitos escritos a mano como estos:

>El conjunto de datos también incluye etiquetas para cada imagen, diciéndonos qué dígito es. Por ejemplo, las etiquetas para las imágenes anteriores son 5, 0, 4 y 1.

Preparación de los datos

El conjunto de datos del MNIST está incluido en Keras y se puede acceder a él usando la función dataset_mnist(). Aquí cargamos el conjunto de datos y luego creamos variables para nuestros datos de prueba y entrenamiento:

biblioteca(keras)
mnist <- dataset_mnist()
x_train <- mnist$train$x
y_train <- mnist$train$y
x_test <- mnist$test$x
y_test <- mnist$test$y

Los datos x son una matriz 3-d (imágenes, ancho, alto) de valores en escala de grises. Para preparar los datos para el entrenamiento, convertimos las matrices 3-d en matrices reformulando el ancho y la altura en una sola dimensión (28×28 imágenes se aplanan en 784 vectores de longitud). Luego, convertimos los valores de la escala de grises de los números enteros que van de 0 a 255 en valores de punto flotante que van de 0 a 1:

…remodelar…
dim(x_tren) <- c(nrow(x_tren), 784)
dim(x_test) <- c(nrow(x_test), 784)
# revaluar
x_train <- x_train / 255
x_test <- x_test / 255
…y que no se puede hacer nada..;

Los datos y son un vector entero con valores que van de 0 a 9. Para preparar estos datos para el entrenamiento, codificamos los vectores en matrices de clase binaria utilizando la función Keras to_categorical():

a_categoría(y_tren, 10)
y_test <- to_categorical(y_test, 10)
…y que no se puede hacer nada..;

Definición del modelo

La estructura central de datos de Keras es un modelo, una forma de organizar las capas. El tipo de modelo más simple es el modelo secuencial, una pila lineal de capas.

Comenzamos creando un modelo secuencial y luego agregamos capas usando el operador de tubería (%>%):

keras_model_sequential()
modelo %>%
layer_dense(unidades = 256, activación = "relu", input_shape = c(784)) %>%
layer_dropout(rate = 0.4) %>%
layer_dense(unidades = 128, activación = "relu") %>%
abandono_de_capas(tasa = 0.3) %>%
layer_dense(unidades = 10, activación = "softmax")
www. www. www. www. www. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww. ww;

El argumento input_shape de la primera capa especifica la forma de los datos de entrada (un vector numérico de longitud 784 que representa una imagen en escala de grises). La última capa produce un vector numérico de longitud 10 (probabilidades para cada dígito) usando una función de activación de softmax.

Utilice la función summary() para imprimir los detalles del modelo:

resumen(modelo)
…y que no se puede hacer nada..;
Modelo…
________________________________________________________________________________
Capa (tipo) Forma de salida Param #
================================================================================
denso_1 (Dense) (Ninguno, 256) 200960
________________________________________________________________________________
abandono_1 (abandono) (Ninguno, 256) 0
________________________________________________________________________________
denso_2 (Dense) (Ninguno, 128) 32896
________________________________________________________________________________
abandono_2 (abandono) (Ninguno, 128) 0
________________________________________________________________________________
denso_3 (Dense) (Ninguno, 10) 1290
================================================================================
Total de parámetros: 235.146
Parámetros entrenables: 235.146
Parámetros no entrenables: 0
…y que no se puede hacer nada más..;

A continuación, compilar el modelo con la función de pérdida apropiada, el optimizador y la métrica:

pre pre… modelo %>% compilar(
pérdida = "categórica_crostropía",
optimizador = optimizer_rmsprop(),
métrica = c("exactitud")
)
…y que no se puede hacer nada..;

Capacitación y evaluación

Utilice la función fit() para entrenar el modelo durante 30 épocas utilizando lotes de 128 imágenes:

historia <- modelo %>% ajuste(
x_tren, y_tren,
épocas = 30, tamaño_de_lote = 128,
validation_split = 0.2
)
…y que no se puede hacer nada..;

El objeto histórico devuelto por fit() incluye métricas de pérdida y precisión que podemos trazar:

…complot (historia)…
…y que no se puede hacer nada..;

Evaluar el rendimiento del modelo en los datos de la prueba:

pre pre pre modelo %>% evalúa(x_test, y_test,verboso = 0)
…y que no se puede hacer nada..;
…pérdida…
[1] 0.1149
$acc
[1] 0.9807
…y que no se puede hacer nada..;

Generar predicciones sobre nuevos datos:

pre pre… modelo %>% predict_classes(x_test)
…y que no se puede hacer nada..;

 [1] 7 2 1 0 4 1 4 9 5 9 0 6 9 0 1 5 9 7 3 4 9 6 5 4 0 7 4 0 1 3 1 3 4 7 2 7 1 2
 [40] 1 1 7 4 2 3 5 1 2 4 4 6 3 5 5 6 0 4 1 9 5 7 8 9 3 7 4 6 4 3 0 7 0 2 9 1 7 3 2
 [79] 9 7 7 6 2 7 8 4 7 3 6 1 3 6 9 3 1 4 1 7 6 9
 [ reached getOption("max.print") -- omitió 9900 entradas ]

Keras proporciona un vocabulario para construir modelos de aprendizaje profundo que es simple, elegante e intuitivo. La construcción de un sistema de respuesta a preguntas, un modelo de clasificación de imágenes, una máquina de Turing neural, o cualquier otro modelo es igual de sencillo.

El artículo de la Guía del Modelo Secuencial describe los fundamentos de los modelos secuenciales de Keras con más profundidad.

Ejemplos

Más de 20 ejemplos completos están disponibles (¡gracias a @dfalbel por su trabajo en estos!). Los ejemplos cubren la clasificación de imágenes, la generación de texto con LSTMs apilados, la respuesta a preguntas con redes de memoria, el aprendizaje de transferencia, la codificación variacional, y más.

Ejemplo
Descripción
adición_rnn
Aplicación del aprendizaje de secuencia a secuencia para realizar la suma de dos números (como cuerdas).
babi_memnn
Entrena una red de memoria en el conjunto de datos bAbI para la comprensión de lectura.
babi_rnn
Entrena una red recurrente de dos ramas en el conjunto de datos de bAbI para la comprensión de lectura.
cifar10_cnn
Entrena una simple CNN profunda en el conjunto de datos de imágenes pequeñas del CIFAR10.
conv_lstm
Demuestra el uso de una red convolutiva de LSTM.
deep_dream
Sueños profundos en Keras.
imdb_bidirectional_lstm
Entrena un LSTM bidireccional en la tarea de clasificación de sentimientos del IMDB.
imdb_cnn
Demuestra el uso de Convolution1D para la clasificación de textos.
imdb_cnn_lstm
Trata una pila convolutiva seguida de una red de pilas recurrentes en la tarea de clasificación de sentimientos de la IMDB.
imdb_fasttext
Entrena un modelo de FastText en la tarea de clasificación de sentimientos del IMDB.
imdb_lstm
Entrena un LSTM en la tarea de clasificación de sentimientos del IMDB.
lstm_generación_de_texto
Genera el texto de los escritos de Nietzsche.
mnist_acgan
Implementación del AC-GAN (Clasificador Auxiliar GAN ) en el conjunto de datos del MNIST
mnist_antirectificador
Demuestra cómo escribir capas personalizadas para Keras
mnist_cnn
Entrena un simple convnet en el conjunto de datos del MNIST.
mnist_irnn
Reproducción del experimento del IRNN con MNIST secuencial píxel a píxel en «A Simple Way to Initialize Recurrent Networks of Rectified Linear Units» de Le et al.
mnist_mlp
Entrena un simple perceptrón profundo multicapa en el conjunto de datos del MNIST.
mnist_hierarchical_rnn
Entrena un RNN jerárquico (HRNN) para clasificar los dígitos del MNIST.
mnist_transfer_cnn
Transferir el ejemplo de un juguete de aprendizaje.
transferencia_de_estilo_neural
Transferencia de estilo neuronal (generando una imagen con el mismo «contenido» que una imagen base, pero con el «estilo» de una imagen diferente).
reuters_mlp
Entrena y evalúa un simple MLP en la tarea de clasificación de temas de Reuters.
stateful_lstm
Demuestra cómo usar RNNs con estado para modelar secuencias largas de forma eficiente.
autocodificador_variable
Demuestra cómo construir un autoencoder de variación.
variational_autoencoder_deconv
Demuestra cómo construir un autoencoder variacional con Keras usando capas de deconvolución.

Aprender más

Después de que te familiarices con lo básico, estos artículos son un buen paso a seguir:

  • Guía del modelo secuencial. El modelo secuencial es una pila lineal de capas y es la API con la que la mayoría de los usuarios deberían empezar.

  • Guía de la API funcional. La API funcional de Keras es el camino a seguir para la definición de modelos complejos, como modelos multi-salida, gráficos acíclicos dirigidos o modelos con capas compartidas.

  • Visualización de entrenamiento. Hay una amplia variedad de herramientas disponibles para visualizar el entrenamiento. Estas incluyen el trazado de las métricas de entrenamiento, la visualización en tiempo real de las métricas dentro del IDE de RStudio, y la integración con la herramienta de visualización TensorBoard incluida en TensorFlow.

  • Usando modelos pre-entrenados. Keras incluye una serie de modelos de aprendizaje profundo (Xception, VGG16, VGG19, ResNet50, InceptionVV3, y MobileNet) que están disponibles junto con los pesos pre-entrenados. Estos modelos se pueden utilizar para la predicción, la extracción de características y el ajuste fino.

  • Preguntas frecuentes. Cubre muchos temas adicionales, incluyendo la transmisión de datos de formación, el almacenamiento de modelos, la formación en las GPU y mucho más.

Keras proporciona un marco productivo y altamente flexible para desarrollar modelos de aprendizaje profundo. No podemos esperar a ver lo que la comunidad R hará con estas herramientas!

principal {
Guiones: heredar;
}

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *