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.
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 nnLa 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 classesEl 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.
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
- Tensores y Autograd de PyTorch
- Datasets y DataLoaders personalizados
- Construcción y entrenamiento de CNN con PyTorch
- Detección de objetos con YOLOv8