Un ejemplo práctico de un modelo de aprendizaje profundo en Python podría ser una red neuronal convolucional (Convolutional Neural Network, CNN) para clasificar imágenes.
En este ejemplo, podremos crear una CNN desde cero y entrenarla utilizando un conjunto de datos de imágenes. Comencemos importando las librerías necesarias:
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
from tensorflow.keras.datasets import cifar10
Ahora cargamos nuestro conjunto de datos. En este caso, utilizaremos el conjunto de datos CIFAR-10, que contiene 10 clases diferentes de imágenes, cada una con 5,000 imágenes de 32x32 píxeles. Dividimos los datos en conjuntos de entrenamiento y prueba:
(train_images, train_labels), (test_images, test_labels) = cifar10.load_data()
Luego, normalizamos las imágenes dividiéndolas por 255 (valor máximo de un píxel en una imagen) y convertimos las etiquetas en vectores one-hot:
train_images = train_images / 255.0
test_images = test_images / 255.0
train_labels = keras.utils.to_categorical(train_labels)
test_labels = keras.utils.to_categorical(test_labels)
Podemos definir ahora nuestra CNN, utilizando capas convolucionales, de pooling y completas (fully connected):
model = keras.Sequential( [ layers.Conv2D(32, (3,3), activation='relu', input_shape=(32,32,3)), layers.MaxPooling2D((2,2)), layers.Conv2D(64, (3,3), activation='relu'), layers.MaxPooling2D((2,2)), layers.Conv2D(128, (3,3), activation='relu'), layers.Flatten(), layers.Dense(128, activation='relu'), layers.Dense(10, activation='softmax') ] )
Finalmente, compilamos y entrenamos nuestro modelo:
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
history = model.fit(train_images, train_labels, epochs=10, validation_data=(test_images, test_labels))
Ahora podemos evaluar nuestro modelo en los datos de prueba y obtener su precisión:
test_loss, test_acc = model.evaluate(test_images, test_labels)
print('Precisión en los datos de prueba:', test_acc)
Este es un ejemplo básico del uso de una red neuronal convolucional en Python para clasificar imágenes. Desde aquí, podemos seguir experimentando con diferentes hiperparámetros, añadiendo capas, optimizando y probando diferentes modelos para mejorar aún más la precisión.