
633
16
장
RNN과 어텐션을 사용한 자연어 처리
사 하강법은 훈련 세트 샘플이 동일 독립 분포(
4
장 참조 )일 때 가장 잘 작동하기 때문에 이 윈
도를 섞어야 합니다. 그다음 윈도를 배치로 만들고 입력 (처음
100
개의 글자 )과 타깃(마지막
100
개의 글자 )를 분리하겠습니다.
batch_size = 32
dataset = dataset.shuffle(10000).batch(batch_size)
dataset = dataset.map(lambda windows: (windows[:, :-1], windows[:, 1:]))
[그림
16
-
1
]은 지금까지 설명한 전처리 단계를 보여줍니다 (윈도 크기는
101
대신
11
이고 배
치 크기는
32
대신
3
입니다 ).
윈도
입력 타깃
배치
그림
16-1
뒤섞은 윈도 데이터셋 준비하기
13
장에서 설명한 것처럼 일반적으로 범주형 입력 특성은 원-핫 벡터나 임베딩으로 인코딩되
어야 합니다. 여기에서는 고유한 글자 수가 적기 때문에 (
39
개) 원-핫 벡터를 사용해 글자를
인코딩합니다.
dataset = dataset.map(
lambda X_batch, Y_batch: (tf.one_hot(X_batch, depth=max_id), Y_batch))
마지막으로 프리페칭을 추가해야 합니다.