딥러닝/Keras

Keras RNN 모델 생성 방법

겡거 2019. 11. 14. 00:29

이번 포스팅에서는 딥 뉴럴 네트워크에서 많이 사용되고 있는 RNN Layer 사용 방법을 소개한다.

RNN의 큰 장점은 과거 상태 정보를 기억함으로써 시계열 정보를 효과적을 추출 할 수 있다.

이 포스팅에서 RNN에 대해서 자세한 내용은 다루지 않는다.

 

Keras에서 RNN 계열의 지원하는 Layer는 여러개가 있다. 이 포스팅에서는 그 중 가장 많이 사용되고 있는 LSTM을 살펴본다. 

 

RNN 내용 참고: https://keras.io/layers/recurrent/

 

Recurrent Layers - Keras Documentation

[source] RNN keras.engine.base_layer.wrapped_fn() Base class for recurrent layers. Arguments cell: A RNN cell instance. A RNN cell is a class that has: a call(input_at_t, states_at_t) method, returning (output_at_t, states_at_t_plus_1). The call method of

keras.io

코드 출처: https://github.com/keras-team/keras/blob/master/examples/lstm_stateful.py

model = Sequential() 
model.add(LSTM(20, input_shape=(lahead, 1), batch_size=batch_size, stateful=stateful)) 
model.add(Dense(1))
model.compile(loss='mse', optimizer='adam')

해당 코드에서 Sequential()을 이용하여 모델을 생성하고, LSTM 레이어를 모델에 담는 형태이다. 

 

LSTM에서 사용되는 주요 인자

 

1) units: 레이어의 뉴런 개수를 지정

2) input_shape: 입력 배열 크기를 지정

3) batch_size: 한번에 입력으로 들어가는 배열의 개수를 지정

4) activation: 활성 함수를 지정

5) stateful: True인 경우 지정된 한 바퀴(Time step)가 종료된 이후에도 상태를 초기화 하지 않고, 다음 바퀴에 초기 상태로 사용한다.

6) return_sequences: True인 경우 Time step 동안 받는 입력마다 매번 출력을 한다. 반대로 False인 경우 Time step 마지막 끝날 때 한번만 출력을 한다. 

 

5번 보충 설명 그림 

6번 보충 설명 그림