미래를 예측할 수 있는 네트워크, 네트워크 순환 신경망은 고정길이 입력이 아닌 임의 길이를 가진 시퀀스를 다룰 수 있다. 예를 들어 문장, 문서, 오디오 샘플을 입력으로 받을 수 있고, 자동 번역, 스피치 투 텍스트 같은 자연어 처리에 유용하다.
케라스의 모델 설계 방식은 Sequential API를 이용한 것이다. 그러나 이것은 여러 층을 공유하거나 다양한 종류의 입력과 출력을 사용하는 등의 복잡한 모델을 만드는 일에는 한계가 있다. 이번에는 더욱 복잡한 모델을 만들 수 있는 방식은 Functional API이다.
example)
일반적인 사용
inputs = Input(shape=(10,))
hidden1 = Dense(64, activation='relu')(inputs) # <- 새로 추가
hidden2 = Dense(64, activation='relu')(hidden1) # <- 새로 추가
output = Dense(1, activation='sigmoid')(hidden2) # <- 새로 추가
model = Model(inputs=inputs, outputs=output) # <- 새로 추가
변수명을 x로 할 때,
inputs = Input(shape=(10,))
x = Dense(8, activation="relu")(inputs)
x = Dense(4, activation="relu")(x)
x = Dense(1, activation="linear")(x)
model = Model(inputs, x)
RNN 은닉층 사용
inputs = Input(shape=(50,1))
lstm_layer = LSTM(10)(inputs)
x = Dense(10, activation='relu')(lstm_layer)
output = Dense(1, activation='sigmoid')(x)
model = Model(inputs=inputs, outputs=output)