Menu iconMenu icon
Aprendizaje Profundo Generativo Edición Actualizada

Capítulo 7: Comprendiendo los Modelos Autorregresivos

Ejercicios Prácticos

Esta sección proporciona ejercicios prácticos para reforzar tu comprensión de los modelos autoregresivos y sus aplicaciones. Cada ejercicio incluye una declaración del problema y una solución con ejemplos de código cuando corresponda.

Ejercicio 1: Implementar un Modelo Simple de Generación de Texto

Declaración del Problema: Implementa un modelo simple de generación de texto usando la arquitectura GPT-2. Ajusta el modelo en un pequeño conjunto de datos personalizado y genera texto basado en un prompt dado.

Solución:

from transformers import GPT2Tokenizer, TFGPT2LMHeadModel, TextDataset, DataCollatorForLanguageModeling
from transformers import Trainer, TrainingArguments

# Load pre-trained GPT-2 tokenizer and model
tokenizer = GPT2Tokenizer.from_pretrained("gpt2")
model = TFGPT2LMHeadModel.from_pretrained("gpt2")

# Prepare a small custom dataset
text = "Your custom dataset text goes here. Make sure to have a substantial amount of text for fine-tuning."
with open("custom_dataset.txt", "w") as f:
    f.write(text)

# Load the dataset and prepare for training
dataset = TextDataset(
    tokenizer=tokenizer,
    file_path="custom_dataset.txt",
    block_size=128
)

data_collator = DataCollatorForLanguageModeling(
    tokenizer=tokenizer,
    mlm=False
)

# Define training arguments
training_args = TrainingArguments(
    output_dir="./results",
    overwrite_output_dir=True,
    num_train_epochs=3,
    per_device_train_batch_size=2,
    save_steps=10_000,
    save_total_limit=2,
)

# Fine-tune the model
trainer = Trainer(
    model=model,
    args=training_args,
    data_collator=data_collator,
    train_dataset=dataset,
)

trainer.train()

# Generate text using the fine-tuned model
input_text = "Once upon a time"
input_ids = tokenizer.encode(input_text, return_tensors='tf')

# Generate text
output = model.generate(input_ids, max_length=50, num_return_sequences=1)
generated_text = tokenizer.decode(output[0], skip_special_tokens=True)
print(generated_text)

Ejercicio 2: Traducir Texto Usando un Modelo Transformer

Declaración del Problema: Usa un modelo preentrenado MarianMT para traducir una frase en inglés al alemán.

Solución:

from transformers import MarianMTModel, MarianTokenizer

# Load pre-trained MarianMT model and tokenizer
model_name = 'Helsinki-NLP/opus-mt-en-de'
tokenizer = MarianTokenizer.from_pretrained(model_name)
model = MarianMTModel.from_pretrained(model_name)

# Define the input text
text = "Hello, how are you?"

# Tokenize the input text
inputs = tokenizer(text, return_tensors="pt")

# Perform translation
translated = model.generate(**inputs)

# Decode the translated text
translated_text = tokenizer.decode(translated[0], skip_special_tokens=True)
print(translated_text)

Ejercicio 3: Resumir un Texto Largo

Declaración del Problema: Implementa un modelo de resumen de texto usando GPT-3. Proporciona un texto largo y genera un resumen conciso.

Solución:

import openai

# Set up OpenAI API key
openai.api_key = 'your-api-key-here'

# Define the prompt for summarization
prompt = ("Summarize the following text:\\n\\n"
          "Artificial intelligence (AI) is intelligence demonstrated by machines, in contrast to the natural intelligence displayed by humans and animals. "
          "Leading AI textbooks define the field as the study of 'intelligent agents': any device that perceives its environment and takes actions that maximize its chance of successfully achieving its goals. "
          "Colloquially, the term 'artificial intelligence' is often used to describe machines (or computers) that mimic 'cognitive' functions that humans associate with the human mind, "
          "such as 'learning' and 'problem solving'.")

# Generate summary using GPT-3
response = openai.Completion.create(
    engine="davinci",
    prompt=prompt,
    max_tokens=60,
    n=1,
    stop=None,
    temperature=0.7
)

# Print the generated summary
print(response.choices[0].text.strip())

Ejercicio 4: Generar una Imagen Usando PixelCNN

Declaración del Problema: Implementa un modelo simple de PixelCNN para generar una imagen basada en una entrada de ruido aleatorio.

Solución:

import numpy as np
import matplotlib.pyplot as plt
from tensorflow.keras.layers import Input, Conv2D
from tensorflow.keras.models import Model

# Define the PixelCNN model (simplified version)
def build_pixelcnn(input_shape):
    inputs = Input(shape=input_shape)
    x = Conv2D(64, (7, 7), padding='same', activation='relu')(inputs)
    x = Conv2D(64, (7, 7), padding='same', activation='relu')(x)
    outputs = Conv2D(1, (1, 1), activation='sigmoid')(x)
    return Model(inputs, outputs, name='pixelcnn')

# Generate random noise as input
input_shape = (28, 28, 1)
noise = np.random.rand(1, *input_shape)

# Build the PixelCNN model
pixelcnn = build_pixelcnn(input_shape)
pixelcnn.compile(optimizer='adam', loss='binary_crossentropy')

# Generate an image (for demonstration purposes, normally you would train the model first)
generated_image = pixelcnn.predict(noise).reshape(28, 28)

# Display the generated image
plt.imshow(generated_image, cmap='gray')
plt.axis('off')
plt.show()

Ejercicio 5: Generar Voz con WaveNet (Conceptual)

Declaración del Problema: Implementa un modelo conceptual de WaveNet para la generación de voz.

Solución:

# Note: This is a conceptual example. Implementing WaveNet from scratch requires significant computational resources.

import tensorflow as tf
from tensorflow.keras.layers import Input, Conv1D, Add, Activation
from tensorflow.keras.models import Model

# Define the WaveNet model (simplified version)
def build_wavenet(input_shape):
    inputs = Input(shape=input_shape)
    x = Conv1D(64, kernel_size=2, dilation_rate=1, padding='causal', activation='relu')(inputs)
    for dilation_rate in [2, 4, 8, 16]:
        x = Conv1D(64, kernel_size=2, dilation_rate=dilation_rate, padding='causal', activation='relu')(x)
        x = Add()([inputs, x])
    outputs = Conv1D(1, kernel_size=1, activation='tanh')(x)
    return Model(inputs, outputs, name='wavenet')

# Build the WaveNet model
input_shape = (None, 1)  # Variable length input
wavenet = build_wavenet(input_shape)
wavenet.summary()

# Generate a waveform (for demonstration purposes, normally you would train the model first)
input_waveform = np.random.rand(1, 16000, 1)  # 1-second random noise at 16kHz
generated_waveform = wavenet.predict(input_waveform).reshape(-1)

# Display the generated waveform
plt.plot(generated_waveform[:1000])  # Display the first 1000 samples
plt.show()

Estos ejercicios prácticos proporcionan experiencia práctica con modelos autoregresivos y sus aplicaciones. Al implementar modelos de generación de texto, traducción, resumen, generación de imágenes y generación de voz, puedes profundizar en tu comprensión de cómo funcionan estos potentes modelos y cómo pueden aplicarse a tareas del mundo real. Cada ejercicio está diseñado para reforzar conceptos y técnicas clave, ayudándote a aprovechar eficazmente los modelos autoregresivos en tus proyectos.

Ejercicios Prácticos

Esta sección proporciona ejercicios prácticos para reforzar tu comprensión de los modelos autoregresivos y sus aplicaciones. Cada ejercicio incluye una declaración del problema y una solución con ejemplos de código cuando corresponda.

Ejercicio 1: Implementar un Modelo Simple de Generación de Texto

Declaración del Problema: Implementa un modelo simple de generación de texto usando la arquitectura GPT-2. Ajusta el modelo en un pequeño conjunto de datos personalizado y genera texto basado en un prompt dado.

Solución:

from transformers import GPT2Tokenizer, TFGPT2LMHeadModel, TextDataset, DataCollatorForLanguageModeling
from transformers import Trainer, TrainingArguments

# Load pre-trained GPT-2 tokenizer and model
tokenizer = GPT2Tokenizer.from_pretrained("gpt2")
model = TFGPT2LMHeadModel.from_pretrained("gpt2")

# Prepare a small custom dataset
text = "Your custom dataset text goes here. Make sure to have a substantial amount of text for fine-tuning."
with open("custom_dataset.txt", "w") as f:
    f.write(text)

# Load the dataset and prepare for training
dataset = TextDataset(
    tokenizer=tokenizer,
    file_path="custom_dataset.txt",
    block_size=128
)

data_collator = DataCollatorForLanguageModeling(
    tokenizer=tokenizer,
    mlm=False
)

# Define training arguments
training_args = TrainingArguments(
    output_dir="./results",
    overwrite_output_dir=True,
    num_train_epochs=3,
    per_device_train_batch_size=2,
    save_steps=10_000,
    save_total_limit=2,
)

# Fine-tune the model
trainer = Trainer(
    model=model,
    args=training_args,
    data_collator=data_collator,
    train_dataset=dataset,
)

trainer.train()

# Generate text using the fine-tuned model
input_text = "Once upon a time"
input_ids = tokenizer.encode(input_text, return_tensors='tf')

# Generate text
output = model.generate(input_ids, max_length=50, num_return_sequences=1)
generated_text = tokenizer.decode(output[0], skip_special_tokens=True)
print(generated_text)

Ejercicio 2: Traducir Texto Usando un Modelo Transformer

Declaración del Problema: Usa un modelo preentrenado MarianMT para traducir una frase en inglés al alemán.

Solución:

from transformers import MarianMTModel, MarianTokenizer

# Load pre-trained MarianMT model and tokenizer
model_name = 'Helsinki-NLP/opus-mt-en-de'
tokenizer = MarianTokenizer.from_pretrained(model_name)
model = MarianMTModel.from_pretrained(model_name)

# Define the input text
text = "Hello, how are you?"

# Tokenize the input text
inputs = tokenizer(text, return_tensors="pt")

# Perform translation
translated = model.generate(**inputs)

# Decode the translated text
translated_text = tokenizer.decode(translated[0], skip_special_tokens=True)
print(translated_text)

Ejercicio 3: Resumir un Texto Largo

Declaración del Problema: Implementa un modelo de resumen de texto usando GPT-3. Proporciona un texto largo y genera un resumen conciso.

Solución:

import openai

# Set up OpenAI API key
openai.api_key = 'your-api-key-here'

# Define the prompt for summarization
prompt = ("Summarize the following text:\\n\\n"
          "Artificial intelligence (AI) is intelligence demonstrated by machines, in contrast to the natural intelligence displayed by humans and animals. "
          "Leading AI textbooks define the field as the study of 'intelligent agents': any device that perceives its environment and takes actions that maximize its chance of successfully achieving its goals. "
          "Colloquially, the term 'artificial intelligence' is often used to describe machines (or computers) that mimic 'cognitive' functions that humans associate with the human mind, "
          "such as 'learning' and 'problem solving'.")

# Generate summary using GPT-3
response = openai.Completion.create(
    engine="davinci",
    prompt=prompt,
    max_tokens=60,
    n=1,
    stop=None,
    temperature=0.7
)

# Print the generated summary
print(response.choices[0].text.strip())

Ejercicio 4: Generar una Imagen Usando PixelCNN

Declaración del Problema: Implementa un modelo simple de PixelCNN para generar una imagen basada en una entrada de ruido aleatorio.

Solución:

import numpy as np
import matplotlib.pyplot as plt
from tensorflow.keras.layers import Input, Conv2D
from tensorflow.keras.models import Model

# Define the PixelCNN model (simplified version)
def build_pixelcnn(input_shape):
    inputs = Input(shape=input_shape)
    x = Conv2D(64, (7, 7), padding='same', activation='relu')(inputs)
    x = Conv2D(64, (7, 7), padding='same', activation='relu')(x)
    outputs = Conv2D(1, (1, 1), activation='sigmoid')(x)
    return Model(inputs, outputs, name='pixelcnn')

# Generate random noise as input
input_shape = (28, 28, 1)
noise = np.random.rand(1, *input_shape)

# Build the PixelCNN model
pixelcnn = build_pixelcnn(input_shape)
pixelcnn.compile(optimizer='adam', loss='binary_crossentropy')

# Generate an image (for demonstration purposes, normally you would train the model first)
generated_image = pixelcnn.predict(noise).reshape(28, 28)

# Display the generated image
plt.imshow(generated_image, cmap='gray')
plt.axis('off')
plt.show()

Ejercicio 5: Generar Voz con WaveNet (Conceptual)

Declaración del Problema: Implementa un modelo conceptual de WaveNet para la generación de voz.

Solución:

# Note: This is a conceptual example. Implementing WaveNet from scratch requires significant computational resources.

import tensorflow as tf
from tensorflow.keras.layers import Input, Conv1D, Add, Activation
from tensorflow.keras.models import Model

# Define the WaveNet model (simplified version)
def build_wavenet(input_shape):
    inputs = Input(shape=input_shape)
    x = Conv1D(64, kernel_size=2, dilation_rate=1, padding='causal', activation='relu')(inputs)
    for dilation_rate in [2, 4, 8, 16]:
        x = Conv1D(64, kernel_size=2, dilation_rate=dilation_rate, padding='causal', activation='relu')(x)
        x = Add()([inputs, x])
    outputs = Conv1D(1, kernel_size=1, activation='tanh')(x)
    return Model(inputs, outputs, name='wavenet')

# Build the WaveNet model
input_shape = (None, 1)  # Variable length input
wavenet = build_wavenet(input_shape)
wavenet.summary()

# Generate a waveform (for demonstration purposes, normally you would train the model first)
input_waveform = np.random.rand(1, 16000, 1)  # 1-second random noise at 16kHz
generated_waveform = wavenet.predict(input_waveform).reshape(-1)

# Display the generated waveform
plt.plot(generated_waveform[:1000])  # Display the first 1000 samples
plt.show()

Estos ejercicios prácticos proporcionan experiencia práctica con modelos autoregresivos y sus aplicaciones. Al implementar modelos de generación de texto, traducción, resumen, generación de imágenes y generación de voz, puedes profundizar en tu comprensión de cómo funcionan estos potentes modelos y cómo pueden aplicarse a tareas del mundo real. Cada ejercicio está diseñado para reforzar conceptos y técnicas clave, ayudándote a aprovechar eficazmente los modelos autoregresivos en tus proyectos.

Ejercicios Prácticos

Esta sección proporciona ejercicios prácticos para reforzar tu comprensión de los modelos autoregresivos y sus aplicaciones. Cada ejercicio incluye una declaración del problema y una solución con ejemplos de código cuando corresponda.

Ejercicio 1: Implementar un Modelo Simple de Generación de Texto

Declaración del Problema: Implementa un modelo simple de generación de texto usando la arquitectura GPT-2. Ajusta el modelo en un pequeño conjunto de datos personalizado y genera texto basado en un prompt dado.

Solución:

from transformers import GPT2Tokenizer, TFGPT2LMHeadModel, TextDataset, DataCollatorForLanguageModeling
from transformers import Trainer, TrainingArguments

# Load pre-trained GPT-2 tokenizer and model
tokenizer = GPT2Tokenizer.from_pretrained("gpt2")
model = TFGPT2LMHeadModel.from_pretrained("gpt2")

# Prepare a small custom dataset
text = "Your custom dataset text goes here. Make sure to have a substantial amount of text for fine-tuning."
with open("custom_dataset.txt", "w") as f:
    f.write(text)

# Load the dataset and prepare for training
dataset = TextDataset(
    tokenizer=tokenizer,
    file_path="custom_dataset.txt",
    block_size=128
)

data_collator = DataCollatorForLanguageModeling(
    tokenizer=tokenizer,
    mlm=False
)

# Define training arguments
training_args = TrainingArguments(
    output_dir="./results",
    overwrite_output_dir=True,
    num_train_epochs=3,
    per_device_train_batch_size=2,
    save_steps=10_000,
    save_total_limit=2,
)

# Fine-tune the model
trainer = Trainer(
    model=model,
    args=training_args,
    data_collator=data_collator,
    train_dataset=dataset,
)

trainer.train()

# Generate text using the fine-tuned model
input_text = "Once upon a time"
input_ids = tokenizer.encode(input_text, return_tensors='tf')

# Generate text
output = model.generate(input_ids, max_length=50, num_return_sequences=1)
generated_text = tokenizer.decode(output[0], skip_special_tokens=True)
print(generated_text)

Ejercicio 2: Traducir Texto Usando un Modelo Transformer

Declaración del Problema: Usa un modelo preentrenado MarianMT para traducir una frase en inglés al alemán.

Solución:

from transformers import MarianMTModel, MarianTokenizer

# Load pre-trained MarianMT model and tokenizer
model_name = 'Helsinki-NLP/opus-mt-en-de'
tokenizer = MarianTokenizer.from_pretrained(model_name)
model = MarianMTModel.from_pretrained(model_name)

# Define the input text
text = "Hello, how are you?"

# Tokenize the input text
inputs = tokenizer(text, return_tensors="pt")

# Perform translation
translated = model.generate(**inputs)

# Decode the translated text
translated_text = tokenizer.decode(translated[0], skip_special_tokens=True)
print(translated_text)

Ejercicio 3: Resumir un Texto Largo

Declaración del Problema: Implementa un modelo de resumen de texto usando GPT-3. Proporciona un texto largo y genera un resumen conciso.

Solución:

import openai

# Set up OpenAI API key
openai.api_key = 'your-api-key-here'

# Define the prompt for summarization
prompt = ("Summarize the following text:\\n\\n"
          "Artificial intelligence (AI) is intelligence demonstrated by machines, in contrast to the natural intelligence displayed by humans and animals. "
          "Leading AI textbooks define the field as the study of 'intelligent agents': any device that perceives its environment and takes actions that maximize its chance of successfully achieving its goals. "
          "Colloquially, the term 'artificial intelligence' is often used to describe machines (or computers) that mimic 'cognitive' functions that humans associate with the human mind, "
          "such as 'learning' and 'problem solving'.")

# Generate summary using GPT-3
response = openai.Completion.create(
    engine="davinci",
    prompt=prompt,
    max_tokens=60,
    n=1,
    stop=None,
    temperature=0.7
)

# Print the generated summary
print(response.choices[0].text.strip())

Ejercicio 4: Generar una Imagen Usando PixelCNN

Declaración del Problema: Implementa un modelo simple de PixelCNN para generar una imagen basada en una entrada de ruido aleatorio.

Solución:

import numpy as np
import matplotlib.pyplot as plt
from tensorflow.keras.layers import Input, Conv2D
from tensorflow.keras.models import Model

# Define the PixelCNN model (simplified version)
def build_pixelcnn(input_shape):
    inputs = Input(shape=input_shape)
    x = Conv2D(64, (7, 7), padding='same', activation='relu')(inputs)
    x = Conv2D(64, (7, 7), padding='same', activation='relu')(x)
    outputs = Conv2D(1, (1, 1), activation='sigmoid')(x)
    return Model(inputs, outputs, name='pixelcnn')

# Generate random noise as input
input_shape = (28, 28, 1)
noise = np.random.rand(1, *input_shape)

# Build the PixelCNN model
pixelcnn = build_pixelcnn(input_shape)
pixelcnn.compile(optimizer='adam', loss='binary_crossentropy')

# Generate an image (for demonstration purposes, normally you would train the model first)
generated_image = pixelcnn.predict(noise).reshape(28, 28)

# Display the generated image
plt.imshow(generated_image, cmap='gray')
plt.axis('off')
plt.show()

Ejercicio 5: Generar Voz con WaveNet (Conceptual)

Declaración del Problema: Implementa un modelo conceptual de WaveNet para la generación de voz.

Solución:

# Note: This is a conceptual example. Implementing WaveNet from scratch requires significant computational resources.

import tensorflow as tf
from tensorflow.keras.layers import Input, Conv1D, Add, Activation
from tensorflow.keras.models import Model

# Define the WaveNet model (simplified version)
def build_wavenet(input_shape):
    inputs = Input(shape=input_shape)
    x = Conv1D(64, kernel_size=2, dilation_rate=1, padding='causal', activation='relu')(inputs)
    for dilation_rate in [2, 4, 8, 16]:
        x = Conv1D(64, kernel_size=2, dilation_rate=dilation_rate, padding='causal', activation='relu')(x)
        x = Add()([inputs, x])
    outputs = Conv1D(1, kernel_size=1, activation='tanh')(x)
    return Model(inputs, outputs, name='wavenet')

# Build the WaveNet model
input_shape = (None, 1)  # Variable length input
wavenet = build_wavenet(input_shape)
wavenet.summary()

# Generate a waveform (for demonstration purposes, normally you would train the model first)
input_waveform = np.random.rand(1, 16000, 1)  # 1-second random noise at 16kHz
generated_waveform = wavenet.predict(input_waveform).reshape(-1)

# Display the generated waveform
plt.plot(generated_waveform[:1000])  # Display the first 1000 samples
plt.show()

Estos ejercicios prácticos proporcionan experiencia práctica con modelos autoregresivos y sus aplicaciones. Al implementar modelos de generación de texto, traducción, resumen, generación de imágenes y generación de voz, puedes profundizar en tu comprensión de cómo funcionan estos potentes modelos y cómo pueden aplicarse a tareas del mundo real. Cada ejercicio está diseñado para reforzar conceptos y técnicas clave, ayudándote a aprovechar eficazmente los modelos autoregresivos en tus proyectos.

Ejercicios Prácticos

Esta sección proporciona ejercicios prácticos para reforzar tu comprensión de los modelos autoregresivos y sus aplicaciones. Cada ejercicio incluye una declaración del problema y una solución con ejemplos de código cuando corresponda.

Ejercicio 1: Implementar un Modelo Simple de Generación de Texto

Declaración del Problema: Implementa un modelo simple de generación de texto usando la arquitectura GPT-2. Ajusta el modelo en un pequeño conjunto de datos personalizado y genera texto basado en un prompt dado.

Solución:

from transformers import GPT2Tokenizer, TFGPT2LMHeadModel, TextDataset, DataCollatorForLanguageModeling
from transformers import Trainer, TrainingArguments

# Load pre-trained GPT-2 tokenizer and model
tokenizer = GPT2Tokenizer.from_pretrained("gpt2")
model = TFGPT2LMHeadModel.from_pretrained("gpt2")

# Prepare a small custom dataset
text = "Your custom dataset text goes here. Make sure to have a substantial amount of text for fine-tuning."
with open("custom_dataset.txt", "w") as f:
    f.write(text)

# Load the dataset and prepare for training
dataset = TextDataset(
    tokenizer=tokenizer,
    file_path="custom_dataset.txt",
    block_size=128
)

data_collator = DataCollatorForLanguageModeling(
    tokenizer=tokenizer,
    mlm=False
)

# Define training arguments
training_args = TrainingArguments(
    output_dir="./results",
    overwrite_output_dir=True,
    num_train_epochs=3,
    per_device_train_batch_size=2,
    save_steps=10_000,
    save_total_limit=2,
)

# Fine-tune the model
trainer = Trainer(
    model=model,
    args=training_args,
    data_collator=data_collator,
    train_dataset=dataset,
)

trainer.train()

# Generate text using the fine-tuned model
input_text = "Once upon a time"
input_ids = tokenizer.encode(input_text, return_tensors='tf')

# Generate text
output = model.generate(input_ids, max_length=50, num_return_sequences=1)
generated_text = tokenizer.decode(output[0], skip_special_tokens=True)
print(generated_text)

Ejercicio 2: Traducir Texto Usando un Modelo Transformer

Declaración del Problema: Usa un modelo preentrenado MarianMT para traducir una frase en inglés al alemán.

Solución:

from transformers import MarianMTModel, MarianTokenizer

# Load pre-trained MarianMT model and tokenizer
model_name = 'Helsinki-NLP/opus-mt-en-de'
tokenizer = MarianTokenizer.from_pretrained(model_name)
model = MarianMTModel.from_pretrained(model_name)

# Define the input text
text = "Hello, how are you?"

# Tokenize the input text
inputs = tokenizer(text, return_tensors="pt")

# Perform translation
translated = model.generate(**inputs)

# Decode the translated text
translated_text = tokenizer.decode(translated[0], skip_special_tokens=True)
print(translated_text)

Ejercicio 3: Resumir un Texto Largo

Declaración del Problema: Implementa un modelo de resumen de texto usando GPT-3. Proporciona un texto largo y genera un resumen conciso.

Solución:

import openai

# Set up OpenAI API key
openai.api_key = 'your-api-key-here'

# Define the prompt for summarization
prompt = ("Summarize the following text:\\n\\n"
          "Artificial intelligence (AI) is intelligence demonstrated by machines, in contrast to the natural intelligence displayed by humans and animals. "
          "Leading AI textbooks define the field as the study of 'intelligent agents': any device that perceives its environment and takes actions that maximize its chance of successfully achieving its goals. "
          "Colloquially, the term 'artificial intelligence' is often used to describe machines (or computers) that mimic 'cognitive' functions that humans associate with the human mind, "
          "such as 'learning' and 'problem solving'.")

# Generate summary using GPT-3
response = openai.Completion.create(
    engine="davinci",
    prompt=prompt,
    max_tokens=60,
    n=1,
    stop=None,
    temperature=0.7
)

# Print the generated summary
print(response.choices[0].text.strip())

Ejercicio 4: Generar una Imagen Usando PixelCNN

Declaración del Problema: Implementa un modelo simple de PixelCNN para generar una imagen basada en una entrada de ruido aleatorio.

Solución:

import numpy as np
import matplotlib.pyplot as plt
from tensorflow.keras.layers import Input, Conv2D
from tensorflow.keras.models import Model

# Define the PixelCNN model (simplified version)
def build_pixelcnn(input_shape):
    inputs = Input(shape=input_shape)
    x = Conv2D(64, (7, 7), padding='same', activation='relu')(inputs)
    x = Conv2D(64, (7, 7), padding='same', activation='relu')(x)
    outputs = Conv2D(1, (1, 1), activation='sigmoid')(x)
    return Model(inputs, outputs, name='pixelcnn')

# Generate random noise as input
input_shape = (28, 28, 1)
noise = np.random.rand(1, *input_shape)

# Build the PixelCNN model
pixelcnn = build_pixelcnn(input_shape)
pixelcnn.compile(optimizer='adam', loss='binary_crossentropy')

# Generate an image (for demonstration purposes, normally you would train the model first)
generated_image = pixelcnn.predict(noise).reshape(28, 28)

# Display the generated image
plt.imshow(generated_image, cmap='gray')
plt.axis('off')
plt.show()

Ejercicio 5: Generar Voz con WaveNet (Conceptual)

Declaración del Problema: Implementa un modelo conceptual de WaveNet para la generación de voz.

Solución:

# Note: This is a conceptual example. Implementing WaveNet from scratch requires significant computational resources.

import tensorflow as tf
from tensorflow.keras.layers import Input, Conv1D, Add, Activation
from tensorflow.keras.models import Model

# Define the WaveNet model (simplified version)
def build_wavenet(input_shape):
    inputs = Input(shape=input_shape)
    x = Conv1D(64, kernel_size=2, dilation_rate=1, padding='causal', activation='relu')(inputs)
    for dilation_rate in [2, 4, 8, 16]:
        x = Conv1D(64, kernel_size=2, dilation_rate=dilation_rate, padding='causal', activation='relu')(x)
        x = Add()([inputs, x])
    outputs = Conv1D(1, kernel_size=1, activation='tanh')(x)
    return Model(inputs, outputs, name='wavenet')

# Build the WaveNet model
input_shape = (None, 1)  # Variable length input
wavenet = build_wavenet(input_shape)
wavenet.summary()

# Generate a waveform (for demonstration purposes, normally you would train the model first)
input_waveform = np.random.rand(1, 16000, 1)  # 1-second random noise at 16kHz
generated_waveform = wavenet.predict(input_waveform).reshape(-1)

# Display the generated waveform
plt.plot(generated_waveform[:1000])  # Display the first 1000 samples
plt.show()

Estos ejercicios prácticos proporcionan experiencia práctica con modelos autoregresivos y sus aplicaciones. Al implementar modelos de generación de texto, traducción, resumen, generación de imágenes y generación de voz, puedes profundizar en tu comprensión de cómo funcionan estos potentes modelos y cómo pueden aplicarse a tareas del mundo real. Cada ejercicio está diseñado para reforzar conceptos y técnicas clave, ayudándote a aprovechar eficazmente los modelos autoregresivos en tus proyectos.