더북(TheBook)

이제 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 값을 반환
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.