Keras에서의 RNN 소개

Keras로 배우는 언어 모델링을 위한 순환 신경망(RNN)

David Cecchini

Data Scientist

Keras란?

  • 고수준 API

  • TensorFlow 2 위에서 실행

  • 설치·사용이 쉬움

$pip install tensorflow

빠른 실험:

from tensorflow import keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense
Keras로 배우는 언어 모델링을 위한 순환 신경망(RNN)

keras.models

keras.models.Sequential

Keras Sequential 클래스의 개요를 보여줍니다. 입력에서 출력까지 레이어를 순차적으로 추가합니다.

keras.models.Model

Keras Model 클래스의 개요를 보여줍니다. 여러 입력과 출력을 가질 수 있어 더 복잡한 아키텍처가 가능합니다.

Keras로 배우는 언어 모델링을 위한 순환 신경망(RNN)

keras.layers

  1. LSTM
  2. GRU
  3. Dense
  4. Dropout
  5. Embedding
  6. Bidirectional
Keras로 배우는 언어 모델링을 위한 순환 신경망(RNN)

keras.preprocessing

keras.preprocessing.sequence.pad_sequences(texts, maxlen=3)

패딩 예시입니다. 텍스트 길이가 패딩 크기보다 짧으면 시작에 "0" 토큰을 추가하고, 길면 마지막 단어를 잘라냅니다.

Keras로 배우는 언어 모델링을 위한 순환 신경망(RNN)

keras.datasets

유용한 데이터셋 다수

  • IMDB 영화 리뷰
  • 로이터 뉴스와이어

그 외 다수!

전체 목록과 사용 예시는 Keras 문서를 참고하세요

Keras로 배우는 언어 모델링을 위한 순환 신경망(RNN)

모델 생성

# 필수 모듈 임포트
from tensorflow import keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
# 모델 클래스 인스턴스화
model = Sequential()
# 레이어 추가
model.add(Dense(64, activation='relu', input_dim=100))
model.add(Dense(1, activation='sigmoid'))
# 모델 컴파일
model.compile(optimizer='adam', loss='mean_squared_error', metrics=['accuracy'])
Keras로 배우는 언어 모델링을 위한 순환 신경망(RNN)

모델 훈련

.fit() 메서드는 학습용 데이터로 모델을 훈련합니다

model.fit(X_train, y_train, epochs=10, batch_size=32)
  1. epochs: 모델 가중치 업데이트 횟수
  2. batch_size: 각 스텝의 데이터 크기
Keras로 배우는 언어 모델링을 위한 순환 신경망(RNN)

모델 평가와 활용

모델 평가:

model.evaluate(X_test, y_test)
[0.3916562925338745, 0.89324]

새 데이터 예측:

model.predict(new_data)
array([[0.91483957],[0.47130653]], dtype=float32)
Keras로 배우는 언어 모델링을 위한 순환 신경망(RNN)

전체 예시: IMDB 감성 분류

# 모델 구성 및 컴파일
model = Sequential()

model.add(Embedding(10000, 128)) model.add(LSTM(128, dropout=0.2)) model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# 훈련
model.fit(x_train, y_train, epochs=5)
# 평가
score, acc = model.evaluate(x_test, y_test)
Keras로 배우는 언어 모델링을 위한 순환 신경망(RNN)

연습할 시간입니다!

Keras로 배우는 언어 모델링을 위한 순환 신경망(RNN)

Preparing Video For Download...