① LSTM 함수를 사용하여 LSTM 셀을 다수 개 구축할 수 있습니다(layers.LSTMCell은 셀이 하나였으나, layers.LSTM은 한 번에 셀을 여러 개 구축할 수 있습니다).
ⓐ units: 네트워크의 층 수(출력 공간의 차원)입니다.
ⓑ dropout: 전체 가중치 중 50% 값을 0으로 설정하여 사용하지 않겠다는 의미입니다.
ⓒ return_sequences: 마지막 출력 또는 전체 순서를 반환하는 것입니다. 이때 return_sequences.False는 마지막 셀에서 밀집층이 한 번만 적용되었다는 것을 의미합니다.
ⓓ unroll: 시간 순서에 따라 입력층과 은닉층에 대한 네트워크를 펼치겠다는 의미입니다. 메모리 사용률은 높을 수 있지만 계속 속도는 빨라질 수 있습니다.
layers.LSTMCell과 layers.LSTM의 코드 구현은 거의 비슷합니다. 단지 네트워크의 def call 함수에서 LSTMCell은 다음과 같이 for 문을 사용하여 LSTMCell을 반복 수행한다는 점이 다릅니다. 즉, LSTMCell은 셀 단위로 수행되므로 다수 셀을 수행하려면 for 문처럼 반복적 수행이 필요합니다. 다음은 LSTMCell과 LSTM을 구현하기 위한 예시 코드입니다.
#LSTMCell
for word in tf.unstack(x, axis=1):
out0, state0 = self.RNNCell0(word, state0, training)
out1, state1 = self.RNNCell1(out0, state1, training)
#LSTM
x = self.rnn(x)