이제 RNN 셀을 이용한 네트워크(혹은 신경망)를 생성하겠습니다.
코드 7-6 RNN 셀을 이용한 네트워크 생성
class RNN_Build(tf.keras.Model): ------ ①
def __init__(self, units): ------ ②
super(RNN_Build, self).__init__() ------ ③
self.state0 = [tf.zeros([batch_size, units])] ------ ④
self.state1 = [tf.zeros([batch_size, units])]
self.embedding = tf.keras.layers.Embedding(total_words, embedding_len,
input_length=max_review_len) ------ ⑤
self.RNNCell0 = tf.keras.layers.SimpleRNNCell(units, dropout=0.2) ------ ⑥
self.RNNCell1 = tf.keras.layers.SimpleRNNCell(units, dropout=0.2)
self.outlayer = tf.keras.layers.Dense(1)
def call(self, inputs, training=None): ------ ②´
x = inputs
x = self.embedding(x) ------ 입력 데이터에 원-핫 인코딩 적용
state0 = self.state0
state1 = self.state1
for word in tf.unstack(x, axis=1): ------ ⑦
out0, state0 = self.RNNCell0(word, state0, training) ------ out0, state0 각각에 self.RNNCell0에서 받아 온 값을 저장
out1, state1 = self.RNNCell1(out0, state1, training) ------ out1, state1 각각에 self.RNNCell1에서 받아 온 값을 저장
x = self.outlayer(out1) ------ 출력층 out1을 적용한 후 그 값을 x 변수에 저장
prob = tf.sigmoid(x) ------ 마지막으로 x에 시그모이드 활성화 함수를 적용하여 prob에 저장
return prob ------ prob 값을 반환