지시 데이터용 데이터 로더

예제 935개를 묶음으로 만드는 일은 누가 해 줄까요?

되짚기

섞어서 여덟 개씩 내주는 데이터 로더

데이터 로더는 예제의 순서를 섞고, 여덟 개씩 묶어 차례로 내주는 프로그램입니다. 한 묶음을 배치라고 부릅니다.

10강에서 스팸 문자를 여덟 통씩 꺼낼 때 쓴 것과 같은 도구입니다.

달라진 점

꺼낸 자리에서 채우고, 당기고, 가립니다

10강에서는 길이를 미리 120칸으로 맞춰 두어 꺼내기만 하면 됐습니다. 이번에는 꺼낸 여덟 개로 그 자리에서 입력 표와 정답 표를 만듭니다.

이 일을 맡은 코드를 콜레이트(collate, '모아서 정리한다') 함수라고 부릅니다. 함수는 정해진 일을 하는 코드 한 묶음입니다.

코드로는

설정 한 줄이 늘었습니다

앞의 두 줄은 10강에서 스팸 문자를 묶을 때도 쓴 설정입니다. 셋째 줄이 새로 들어갔습니다. 묶을 때 앞 장의 묶는 함수를 쓰라고 알려 주는 줄입니다.

작은 글씨가 실제 코드입니다. batch size는 묶음 크기, shuffle은 섞기, True는 '그렇게 한다'는 뜻입니다. collate_fn은 '묶는 함수'라는 뜻이고, 등호 뒤는 그 함수에 붙인 이름입니다.

꺼내 보면

묶음마다 가로 칸 수가 다릅니다

첫 묶음은 8줄 × 61칸, 다음은 76칸, 73칸입니다. 묶음마다 그 안에서 가장 긴 예제에 맞췄기 때문입니다.

원본 실습의 실제 결과입니다. 순서를 섞어 묶으므로 4편에서 본 맨 앞 여덟 개(74칸)와는 다른 묶음입니다. 입력 표와 정답 표는 늘 같은 크기입니다.

묶음의 수

116묶음, 7묶음, 14묶음

935개를 여덟 개씩 묶으면 116묶음이 되고 7개가 남습니다. 훈련할 때는 묶음 크기가 늘 같아야 고르게 배우므로 이 모자란 묶음을 버립니다. 검증과 테스트는 점수만 재면 되니, 하나도 빼지 않으려고 남은 것도 한 묶음으로 칩니다.

안전장치

한 줄은 1,024칸을 넘지 않게 합니다

이 모델이 한 번에 볼 수 있는 토큰은 1,024개까지입니다. 그래서 한 줄이 1,024칸을 넘으면 거기서 자르도록 해 둡니다.

지금 자료는 가장 긴 예제가 91칸이라 잘리는 일이 없습니다.

다음 편

데이터는 준비됐습니다. 지금 모델에 지시를 넣어 보면 어떨까요?

8편지금 시켜 보면? 12강 목록