RNN은 입력과 출력에 따라 유형이 다양합니다.
1. 일대일: 순환이 없기 때문에 RNN이라고 말하기 어려우며, 순방향 네트워크가 대표적 사례입니다.
2. 일대다: 입력이 하나이고, 출력이 다수인 구조입니다. 이미지를 입력해서 이미지에 대한 설명을 문장으로 출력하는 이미지 캡션(image captioning)이 대표적 사례입니다.
3. 다대일: 입력이 다수이고 출력이 하나인 구조로, 문장을 입력해서 긍정/부정을 출력하는 감성 분석기에서 사용됩니다.
다대일에 대한 모델은 텐서플로 2에서 다음과 같이 구현합니다. 다음은 예시 코드이며, 이를 이용한 순환 신경망 구현은 7.4절에서 다룹니다.
In_layer = tf.keras.input(shape=(3,1), name='input')
RNN_layer = tf.keras.layers.SimpleRNN(100, name='RNN')(In_layer)
Out_layer = tf.keras.layers.Dense(1, name='output')(RNN_layer)
코드를 구조화하면 다음 그림과 같습니다. 하지만 코드는 입력과 출력 사이에 하나의 RNN 셀(cell)만 가지고 있는 것에 주의해야 합니다.
▲ 그림 7-5 다대일 모델