Path: blob/master/site/es-419/tutorials/images/cnn.ipynb
25118 views
Copyright 2019 The TensorFlow Authors.
Red neuronal convolucional (CNN)
En este tutorial se muestra el entrenamiento de una sencilla Red neuronal convolucional (CNN) para clasificar imágenes CIFAR. Dado que este tutorial utiliza la API secuencial de Keras, crear y entrenar su modelo le llevará tan solo unas pocas líneas de código.
Importar TensorFlow
Descargue y prepare el conjunto de datos CIFAR10
El conjunto de datos CIFAR10 contiene 60,000 imágenes en color en 10 clases, con 6,000 imágenes en cada clase. El conjunto de datos se divide en 50,000 imágenes de entrenamiento y 10,000 imágenes de prueba. Las clases son mutuamente excluyentes y no hay superposición entre ellas.
Verifique los datos
Para verificar que el conjunto de datos parece correcto, vamos a representar las 25 primeras imágenes del conjunto de entrenamiento y a mostrar el nombre de la clase debajo de cada imagen:
Cree la base convolucional
Las 6 líneas de código siguientes definen la base convolucional utilizando un patrón común: una pila de capas Conv2D y MaxPooling2D.
Como entrada, una CNN toma tensores de forma (image_height, image_width, color_channels), ignorando el tamaño del lote. Si no conoce estas dimensiones, color_channels se refiere a (R,G,B). En este ejemplo, configurará su CNN para procesar entradas de forma (32, 32, 3), que es el formato de las imágenes CIFAR. Puede hacerlo pasando el argumento input_shape
a su primera capa.
Visualicemos la arquitectura de su modelo hasta ahora:
Arriba, puede ver que la salida de cada capa Conv2D y MaxPooling2D es un tensor 3D de forma (altura, ancho, canales). Las dimensiones de ancho y altura tienden a reducirse conforme se profundiza en la red. El número de canales de salida de cada capa Conv2D se controla mediante el primer argumento (por ejemplo, 32 o 64). Normalmente, cuando el ancho y la altura se encogen, puede permitirse (computacionalmente) agregar más canales de salida en cada capa Conv2D.
Agregue capas densas en la parte superior
Para completar el modelo, introducirá el último tensor de salida de la base convolucional (de forma (4, 4, 64)) en una o varias capas densas para realizar la clasificación. Las capas densas toman vectores como entrada (que son 1D), mientras que la salida actual es un tensor 3D. Primero, aplanará (o desenrollará) la salida 3D a 1D, y después agregará una o más capas Densas en la parte superior. CIFAR tiene 10 clases de salida, por lo que utilizará una capa Densa final con 10 salidas.
Esta es la arquitectura completa de su modelo:
El resumen de la red muestra que las salidas (4, 4, 64) se aplanaron en vectores de forma (1024) antes de pasar por dos capas densas.
Compile y entrene el modelo
Evaluación del modelo
Su CNN simple ha logrado una precisión en las pruebas de más del 70%. ¡No está mal para unas pocas líneas de código! Para otro estilo de CNN, eche un vistazo al ejemplo TensorFlow 2 quickstart para expertos que utiliza la API de subclases de Keras y tf.GradientTape
.