Introdução
Neste projeto, você aprenderá como implementar uma função para dividir um conjunto de dados em mini-lotes (mini-batches), uma técnica comummente utilizada no treinamento de aprendizado profundo (deep learning).
🎯 Tarefas
Neste projeto, você aprenderá:
- Como implementar a função
data_pipelinepara dividir um conjunto de dados em mini-lotes - Como testar a função
data_pipelinepara garantir que ela funcione como esperado
🏆 Conquistas
Após concluir este projeto, você será capaz de:
- Dividir um conjunto de dados em mini-lotes usando a função
data_pipeline - Verificar a funcionalidade da função
data_pipelinepor meio de testes
Implementar Mini-Lotes (Mini-Batches)
Nesta etapa, você aprenderá como implementar a função data_pipeline para dividir um conjunto de dados em mini-lotes.
Abra o arquivo data_pipeline.py em seu editor de texto.
Implemente a função data_pipeline de acordo com os requisitos:
- A função deve receber dois parâmetros:
data(uma lista de listas contendo inteiros) ebatch_size(um inteiro representando o tamanho de cada mini-lote). - A função deve retornar um gerador (generator) que produz lotes (batches) dos dados de entrada, onde cada lote contém
batch_sizelistas de inteiros. - Se a quantidade restante de dados for menor que
batch_size, a função deve produzir todas as amostras restantes.
Aqui está a função data_pipeline completa:
from typing import Generator, List
def data_pipeline(data: List[List[int]], batch_size: int) -> Generator[List[List[int]], None, None]:
"""
Esta função recebe uma lista de listas contendo inteiros e a divide em 'lotes' menores de um tamanho especificado.
Ela retorna um gerador que produz esses lotes sequencialmente.
Parâmetros:
data (List[List[int]]): O conjunto de dados de entrada, uma lista de listas contendo inteiros.
batch_size (int): O tamanho de cada lote, ou seja, o número de listas de inteiros a serem incluídas em cada lote.
Retorna:
Generator[List[List[int]], None, None]: Um gerador que produz lotes dos dados de entrada, com cada lote contendo 'batch_size' listas de inteiros.
"""
for i in range(0, len(data), batch_size):
batch_data = data[i : i + batch_size]
yield batch_data
Salve o arquivo data_pipeline.py.
Testar os Mini-Lotes (Mini-Batches)
Nesta etapa, você testará a função data_pipeline para garantir que ela funcione como esperado.
Abra o arquivo data_pipeline.py em seu editor de texto.
Adicione o seguinte código ao final do arquivo para testar a função data_pipeline:
if __name__ == "__main__":
data = [[1, 2], [1, 3], [3, 5], [2, 1], [3, 3]]
batch_size = 2
batch_data = data_pipeline(data, batch_size)
for batch in batch_data:
print(f"{batch=}")
Salve o arquivo data_pipeline.py.
Execute o arquivo data_pipeline.py em seu terminal:
python data_pipeline.py
A saída (output) deve ser:
batch=[[1, 2], [1, 3]]
batch=[[3, 5], [2, 1]]
batch=[[3, 3]]
Esta saída confirma que a função data_pipeline está funcionando como esperado, dividindo o conjunto de dados de entrada em mini-lotes de tamanho 2.
Resumo
Parabéns! Você concluiu este projeto. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.



