① SimpleRNN 함수를 사용하여 은닉 노드가 다수 개인 RNN 셀을 여러 개 구축할 수 있습니다(SimpleRNNCell은 셀이 하나였으나, SimpleRNN은 한 번에 셀을 여러 개 구축할 수 있습니다).
ⓐ units: 네트워크의 층 수(출력 공간의 차원)
ⓑ dropout: 전체 노드 중 20% 값을 0으로 설정하여 사용하지 않겠다는 의미
ⓒ return_sequences: 마지막 출력 또는 전체 순서를 반환하는 것입니다. 이때 주의해야 할 점은 return_sequences.True는 출력 순서 중 마지막 값만 출력하는 것이 아니라 전체 순서열을 3차원 텐서 형태로 출력하라는 것입니다.
SimpleRNNCell과 SimpleRNN의 코드 구현은 거의 비슷합니다. 단지 네트워크의 def call 함수에서 SimpleRNNCell은 다음과 같이 for 문을 사용하여 SimpleRNNCell을 반복 수행한다는 점이 다릅니다. 즉, SimpleRNNCell은 셀 단위로 수행되므로 다수의 셀을 수행하려면 다음 예시 코드의 for 문처럼 반복적인 수행이 필요합니다.
#SimpleRNNCell
for word in tf.unstack(x, axis=1):
out0, state0 = self.RNNCell0(word, state0, training)
out1, state1 = self.RNNCell1(out0, state1, training)
#SimpleRNN
x = self.rnn(x)