Ejemplos Keras
1. Clasificación de Imágenes (MNIST)
Este ejemplo utiliza el conjunto de datos MNIST, que contiene imágenes de dígitos escritos a mano.
import numpy as np
from tensorflow.keras import layers, models
from tensorflow.keras.datasets import mnist
# Cargar el conjunto de datos
(x_train, y_train), (x_test, y_test) = mnist.load_data()
# Preprocesar los datos
x_train = x_train.astype('float32') / 255
x_test = x_test.astype('float32') / 255
x_train = np.expand_dims(x_train, axis=-1) # Añadir dimensión para canal
x_test = np.expand_dims(x_test, axis=-1)
# Crear el modelo
model = models.Sequential([
layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)),
layers.MaxPooling2D((2, 2)),
layers.Flatten(),
layers.Dense(64, activation='relu'),
layers.Dense(10, activation='softmax')
])
# Compilar el modelo
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
# Entrenar el modelo
model.fit(x_train, y_train, epochs=5, batch_size=64)
# Evaluar el modelo
test_loss, test_acc = model.evaluate(x_test, y_test)
print(f'Test accuracy: {test_acc}')
2. Regresión Simple
Este ejemplo muestra cómo construir un modelo simple para la regresión.
import numpy as np
from tensorflow.keras import layers, models
# Generar datos de ejemplo
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 6, 8, 10]) # Relación lineal y = 2x
# Crear el modelo
model = models.Sequential([
layers.Dense(1, input_shape=(1,))
])
# Compilar el modelo
model.compile(optimizer='adam', loss='mean_squared_error')
# Entrenar el modelo
model.fit(x, y, epochs=100)
# Predecir nuevos valores
predictions = model.predict(np.array([6, 7, 8]))
print(predictions)
3. Clasificación de Texto (Usando Embeddings)
Este ejemplo usa Keras para clasificar texto. Aquí se utiliza el conjunto de datos de comentarios.
from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.preprocessing.sequence import pad_sequences
from tensorflow.keras import layers, models
# Datos de ejemplo
texts = ['I love programming', 'I hate bugs', 'I enjoy coding', 'Debugging is fun']
labels = [1, 0, 1, 0] # 1: Positivo, 0: Negativo
# Tokenización
tokenizer = Tokenizer()
tokenizer.fit_on_texts(texts)
sequences = tokenizer.texts_to_sequences(texts)
data = pad_sequences(sequences)
# Crear el modelo
model = models.Sequential([
layers.Embedding(input_dim=len(tokenizer.word_index) + 1, output_dim=8, input_length=data.shape[1]),
layers.GlobalAveragePooling1D(),
layers.Dense(1, activation='sigmoid')
])
# Compilar el modelo
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
# Entrenar el modelo
model.fit(data, labels, epochs=10)
# Hacer predicciones
test_texts = ['I love bugs', 'I hate programming']
test_sequences = tokenizer.texts_to_sequences(test_texts)
test_data = pad_sequences(test_sequences, maxlen=data.shape[1])
predictions = model.predict(test_data)
print(predictions)
4. Uso de Modelos Preentrenados (Transfer Learning)
Este ejemplo utiliza un modelo preentrenado (MobileNetV2) para realizar clasificación de imágenes.
import tensorflow as tf
from tensorflow.keras.applications import MobileNetV2
from tensorflow.keras import layers, models
# Cargar el modelo preentrenado sin la capa superior
base_model = MobileNetV2(weights='imagenet', include_top=False, input_shape=(224, 224, 3))
# Congelar las capas base
base_model.trainable = False
# Añadir nuevas capas
model = models.Sequential([
base_model,
layers.GlobalAveragePooling2D(),
layers.Dense(1, activation='sigmoid') # Para clasificación binaria
])
# Compilar el modelo
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
# Supongamos que tienes tus datos de entrenamiento en `train_data` y `train_labels`
# model.fit(train_data, train_labels, epochs=5)
5. Guardar y Cargar un Modelo
Este ejemplo muestra cómo guardar un modelo entrenado y luego cargarlo para hacer predicciones.
# Supongamos que tienes un modelo ya entrenado
# Guardar el modelo
model.save('mi_modelo.h5')
# Cargar el modelo
from tensorflow.keras.models import load_model
loaded_model = load_model('mi_modelo.h5')
# Hacer predicciones con el modelo cargado
# predictions = loaded_model.predict(nuevos_datos)
Estos ejemplos abarcan diversas aplicaciones de Keras, desde clasificación de imágenes hasta regresión y clasificación de texto, lo que te da una buena base para comenzar a trabajar con esta poderosa biblioteca.