Learn AI with Python · Lección

Construcción y entrenamiento de CNN con PyTorch

nn.Conv2d, nn.MaxPool2d, nn.Linear, bucle de entrenamiento, optimizador, función de pérdida y seguimiento de la precisión.

Lección 3 de 413 pasos

Construcción y entrenamiento de CNN con PyTorch es una lección gratuita de Learn AI with Python en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Learn AI with Python, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Learn AI with Python incluye 4 lecciones en total.

¿Por qué usar CNN con imágenes?

Las redes neuronales convolucionales aprenden patrones espaciales: bordes, texturas y después formas y objetos. Las convoluciones comparten pesos por toda la imagen, lo que hace que las CNN sean eficientes y capaces de reconocer patrones independientemente de su posición; por eso son la base de la visión artificial.

import torch
import torch.nn as nn

La clase base nn.Module

Los modelos heredan de nn.Module. Defina las capas en __init__ y el flujo de datos en forward. PyTorch realiza automáticamente el seguimiento de los parámetros y los gradientes.

class CNN(nn.Module):
    def __init__(self):
        super().__init__()

Capas de convolución

nn.Conv2d(in_channels, out_channels, kernel_size) desliza filtros entrenables sobre la imagen para producir mapas de características. La primera convolución recibe 3 canales (RGB) y produce más canales que capturan distintas características.

self.conv1 = nn.Conv2d(3, 16, kernel_size=3, padding=1)
self.conv2 = nn.Conv2d(16, 32, kernel_size=3, padding=1)

Capas de pooling

nn.MaxPool2d reduce los mapas de características conservando el valor máximo de cada ventana. Esto disminuye el tamaño espacial, reduce el cálculo y añade un poco de invariancia frente a las traslaciones.

self.pool = nn.MaxPool2d(kernel_size=2, stride=2)

Capas totalmente conectadas

Después de las convoluciones, aplane las características y páselas por capas nn.Linear para producir puntuaciones de clase. La capa Linear final genera un valor por cada clase.

self.fc1 = nn.Linear(32 * 8 * 8, 128)
self.fc2 = nn.Linear(128, 10)  # 10 classes

El método forward

El método forward define cómo fluyen los datos: convolución, ReLU y pooling, repetidos varias veces; después, aplana los datos y los pasa a las capas lineales. F.relu añade la no linealidad que permite a la red aprender patrones complejos.

import torch.nn.functional as F

    def forward(self, x):
        x = self.pool(F.relu(self.conv1(x)))
        x = self.pool(F.relu(self.conv2(x)))
        x = x.view(x.size(0), -1)  # flatten
        x = F.relu(self.fc1(x))
        return self.fc2(x)

Pérdida y optimizador

Para la clasificación, utilice CrossEntropyLoss. Un optimizador como Adam actualiza los pesos mediante los gradientes. Páselo junto con los parámetros del modelo y una tasa de aprendizaje.

model = CNN()
criterion = nn.CrossEntropyLoss()
optimizer = torch.optim.Adam(model.parameters(), lr=1e-3)

El bucle de entrenamiento: puesta a cero de gradientes

Cada paso comienza borrando los gradientes antiguos con optimizer.zero_grad(). Si omite este paso, los gradientes se acumulan entre lotes y sus actualizaciones se corrompen.

for images, labels in loader:
    optimizer.zero_grad()

Pasada hacia delante y pérdida

Ejecute el lote en el modelo para obtener predicciones y, después, calcule la pérdida comparando las predicciones con las etiquetas reales. La pérdida es un único número que mide cuánto se equivoca el modelo.

    outputs = model(images)
    loss = criterion(outputs, labels)

Retropropagación y actualización

loss.backward() calcula los gradientes mediante autograd y optimizer.step() ajusta los pesos para reducir la pérdida. Juntos constituyen un paso de aprendizaje.

    loss.backward()
    optimizer.step()

Seguimiento de la precisión

Supervise el progreso contando las predicciones correctas. Tome el argmax de las salidas para obtener las clases predichas, compárelas con las etiquetas y divida los aciertos entre el total.

    preds = outputs.argmax(dim=1)
    correct = (preds == labels).sum().item()
    acc = correct / labels.size(0)
    print("batch acc:", acc)

Comprobación rápida

Ponga a prueba sus conocimientos sobre el bucle de entrenamiento.

Repaso: construcción y entrenamiento de CNN

Construyó una CNN heredando de nn.Module, con capas nn.Conv2d, nn.MaxPool2d y nn.Linear, además de un método forward. La entrenó con el siguiente bucle: zero_grad, pasada hacia delante, loss.backward(), optimizer.step(), y realizó el seguimiento de la precisión mediante argmax.

Gratis para empezar

Aprende Python con un tutor de IA — gratis

Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.

Cursos
53
Lecciones
225

Preguntas frecuentes

¿La lección «Construcción y entrenamiento de CNN con PyTorch» es gratis?

Sí — el texto completo de «Construcción y entrenamiento de CNN con PyTorch» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Learn AI with Python, actualiza a CoddyKit PRO. El curso de Learn AI with Python incluye 4 lecciones en total.

¿Qué aprenderé en «Construcción y entrenamiento de CNN con PyTorch»?

nn.Conv2d, nn.MaxPool2d, nn.Linear, bucle de entrenamiento, optimizador, función de pérdida y seguimiento de la precisión. Practicas Learn AI with Python con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Learn AI with Python?

No se requiere experiencia previa. Learn AI with Python en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Construcción y entrenamiento de CNN con PyTorch»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Learn AI with Python?

Sí. Cada lección de Learn AI with Python incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Tensores y Autograd de PyTorch
  2. Datasets y DataLoaders personalizados
  3. Construcción y entrenamiento de CNN con PyTorch
  4. Detección de objetos con YOLOv8
← Volver a Learn AI with Python