소개
이 프로젝트에서는 딥 러닝 훈련에 일반적으로 사용되는 기술인 데이터 세트를 미니 배치 (mini-batches) 로 분할하는 함수를 구현하는 방법을 배우게 됩니다.
🎯 과제
이 프로젝트에서 다음을 배우게 됩니다:
- 데이터 세트를 미니 배치로 분할하기 위한
data_pipeline함수를 구현하는 방법 data_pipeline함수가 예상대로 작동하는지 확인하기 위해 테스트하는 방법
🏆 성과
이 프로젝트를 완료하면 다음을 수행할 수 있습니다:
data_pipeline함수를 사용하여 데이터 세트를 미니 배치로 분할- 테스트를 통해
data_pipeline함수의 기능을 검증
미니 배치 구현
이 단계에서는 데이터 세트를 미니 배치로 분할하기 위한 data_pipeline 함수를 구현하는 방법을 배우게 됩니다.
텍스트 편집기에서 data_pipeline.py 파일을 엽니다.
요구 사항에 따라 data_pipeline 함수를 구현합니다:
- 이 함수는 두 개의 매개변수를 사용해야 합니다:
data(정수를 포함하는 리스트의 리스트) 및batch_size(각 미니 배치의 크기를 나타내는 정수). - 이 함수는 입력 데이터의 배치를 생성하는 제너레이터 (generator) 를 반환해야 하며, 각 배치는
batch_size개의 정수 리스트를 포함합니다. - 남은 데이터의 양이
batch_size보다 적으면 함수는 남은 모든 샘플을 출력해야 합니다.
다음은 완성된 data_pipeline 함수입니다:
from typing import Generator, List
def data_pipeline(data: List[List[int]], batch_size: int) -> Generator[List[List[int]], None, None]:
"""
이 함수는 정수를 포함하는 리스트의 리스트를 받아 지정된 크기의 더 작은 '배치'로 나눕니다.
이 함수는 이러한 배치를 순차적으로 생성하는 제너레이터를 반환합니다.
매개변수:
data (List[List[int]]): 입력 데이터 세트, 정수를 포함하는 리스트의 리스트.
batch_size (int): 각 배치의 크기, 즉 각 배치에 포함할 정수 리스트의 수.
반환값:
Generator[List[List[int]], None, None]: 입력 데이터의 배치를 생성하는 제너레이터로, 각 배치는 'batch_size' 개의 정수 리스트를 포함합니다.
"""
for i in range(0, len(data), batch_size):
batch_data = data[i : i + batch_size]
yield batch_data
data_pipeline.py 파일을 저장합니다.
미니 배치 테스트
이 단계에서는 data_pipeline 함수가 예상대로 작동하는지 확인하기 위해 테스트합니다.
텍스트 편집기에서 data_pipeline.py 파일을 엽니다.
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=}")
data_pipeline.py 파일을 저장합니다.
터미널에서 data_pipeline.py 파일을 실행합니다:
python data_pipeline.py
출력 결과는 다음과 같아야 합니다:
batch=[[1, 2], [1, 3]]
batch=[[3, 5], [2, 1]]
batch=[[3, 3]]
이 출력 결과는 data_pipeline 함수가 예상대로 작동하여 입력 데이터 세트를 크기 2 의 미니 배치로 분할하고 있음을 확인합니다.
요약
축하합니다! 이 프로젝트를 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.



