1. 데이터셋 로드

IMDB 데이터셋 : 인터넷 영화 데이터베이스로부터 가져온 부정 또는 긍정의 리뷰 50000개

훈련 데이터 25000개, 테스트 데이터 25000개, 50% 긍정, 50% 부정

from keras.datasets import imdb

(train_data, train_labels),(test_data, test_labels) = imdb.load_data(num_words=10000)

train_data와 test_data는 리뷰의 목록 ( 단어 인덱스의 리스트 )

train_labels와 test_labels는 0(부정) & 1(긍정) 의 리스트

2. 데이터 준비 : 리스트 → 텐서 로 변환

원-핫-인코딩하여 0과 1의 벡터로 변환

어떤 리뷰에 있는 단어의 인덱스의 원소만 1로 바꾸어주고 나머지는 0

Untitled

import numpy as np

def vectorize_sequences(sequences, dimension=10000):
  result = np.zeros((len(sequences),dimension))
  for i, sequence in enumerate(sequences):
    result[i, sequence] = 1
  return result

x_train = vectorize_sequences(train_data)
x_test = vectorize_sequences(test_data)

<aside> 💡 원-핫 인코딩

</aside>

3. 신경망 모델 만들기

벡터 데이터(2D 텐서) 입력 & 이진 분류 ⇒ relu 활성화 함수를 사용한 밀집 연결 층(Dense) 쌓기

from keras import models
from keras import layers

model = models.Sequential()
model.add(layers.Dense(16, activation='relu', input_shape=((10000,))))
model.add(layers.Dense(16, activation='relu'))
model.add(layers.Dense(1,activation="sigmoid"))

Untitled

은닉 유닛 ( 은닉 노드 ) : 층이 나타내는 표현 공간의 차원

n개의 은닉 유닛 —> 가중치 행렬 W의 크기 = (input_dimension, n)