① imdb.load_data() 함수를 사용하여 IMDB 데이터셋을 내려받습니다. imdb.load_data() 파라미터로 num_words를 사용하는데, num_words는 데이터에서 등장 빈도 순위로 몇 번째에 해당하는 단어까지 사용할지를 의미합니다. 앞의 코드에서 10000을 사용하고 있는데, 등장 빈도 순위가 1~10000에 해당하는 단어만 사용하겠다는 의미입니다.
② 전체 훈련 데이터셋에서 각 샘플의 길이는 서로 다를 수 있습니다. 또한, 각 문서 혹은 각 문장은 단어 수가 제각각입니다. 모델의 입력으로 사용하려면 모든 샘플 길이를 동일하게 맞추어야 합니다. 이를 자연어 처리에서는 패딩(padding) 작업이라고 하며, 보통 숫자 0을 넣어서 길이가 다른 샘플들의 길이를 맞추어 줍니다. 케라스에서는 pad_sequence()를 사용합니다. pad_sequence()는 정해 준 길이보다 길이가 긴 샘플은 값을 일부 자르고, 정해 준 길이보다 길이가 짧은 샘플은 값을 0으로 채웁니다.
- 첫 번째 인자: 패딩을 진행할 데이터
- maxlen: 모든 데이터에 대해 정규화할 길이
③ 넘파이 배열(NumPy array)을 Dataset으로 변환합니다. 이때 주의할 것은 변환하려는 전체 데이터를 메모리로 로딩해야 하므로 큰 용량의 메모리가 필요합니다. 메모리 문제에 대한 해결책은 Dataset의 from_generator를 사용하는 것입니다. from_generator를 사용하면 데이터를 한 번에 메모리에 로딩하는 것이 아니고, 필요할 때만 파이썬 generator를 통해 가져옵니다.