IOKELU
Nivel: Inteligencia Artificial – Avanzado (Guía 3)

Redes Neuronales Convolucionales (CNN)

Las Redes Neuronales Convolucionales (CNN) son el estándar en visión artificial. Permiten detectar patrones visuales como bordes, texturas, formas y objetos completos. En esta guía aprenderás cómo funcionan, cómo se construyen y cómo se entrenan.

Tabla de contenidos

  • Qué es una CNN
  • Capas convolucionales
  • Filtros y kernels
  • Stride y padding
  • Pooling
  • Arquitectura típica
  • Flatten y capas densas
  • Ejemplo con Keras
  • Ejercicios

1. Qué es una CNN

Una CNN es una red neuronal diseñada para procesar imágenes. Aprende patrones visuales mediante filtros que recorren la imagen.

2. Capas convolucionales

Una capa convolucional aplica filtros (kernels) sobre la imagen para extraer características.


layers.Conv2D(filters=32, kernel_size=(3,3), activation='relu')
    

3. Filtros y kernels

Los filtros son pequeñas matrices que recorren la imagen detectando patrones.

4. Stride y padding

Stride: cuántos píxeles avanza el filtro. Padding: si se agregan bordes para mantener el tamaño.

5. Pooling

El pooling reduce el tamaño de la imagen y extrae características más robustas.


layers.MaxPooling2D(pool_size=(2,2))
    

6. Arquitectura típica

7. Flatten y capas densas

Después de extraer características, la imagen se aplana y se conecta a capas densas.


layers.Flatten()
layers.Dense(64, activation='relu')
layers.Dense(10, activation='softmax')
    

8. Ejemplo completo con Keras


import tensorflow as tf
from tensorflow.keras import layers

model = tf.keras.Sequential([
    layers.Conv2D(32, (3,3), activation='relu', input_shape=(28,28,1)),
    layers.MaxPooling2D((2,2)),
    layers.Conv2D(64, (3,3), activation='relu'),
    layers.MaxPooling2D((2,2)),
    layers.Flatten(),
    layers.Dense(64, activation='relu'),
    layers.Dense(10, activation='softmax')
])

model.compile(
    optimizer='adam',
    loss='sparse_categorical_crossentropy',
    metrics=['accuracy']
)

model.fit(X_train, y_train, epochs=10)
model.evaluate(X_test, y_test)
    

9. Ejercicios


Siguiente guía

Redes Neuronales Recurrentes (RNN) →