번역을 수행하는 인코더와 디코더 네트워크를 구축합니다. 먼저 인코더 네트워크를 구축해 보겠습니다.
코드 10-31 인코더 네트워크 구축
class Encoder(tf.keras.Model):
def __init__(self, vocab_size, embedding_dim, enc_units, batch_sz):
super(Encoder, self).__init__()
self.batch_sz = batch_sz
self.enc_units = enc_units
self.embedding = tf.keras.layers.Embedding(vocab_size, embedding_dim)
self.gru = tf.keras.layers.GRU(self.enc_units,
return_sequences=True,
return_state=True,
recurrent_initializer='glorot_uniform') ------ 7장에서 학습했던 GRU를 이용한 모델 생성
def call(self, x, hidden):
x = self.embedding(x)
output, state = self.gru(x, initial_state=hidden)
return output, state
def initialize_hidden_state(self):
return tf.zeros((self.batch_sz, self.enc_units)) ------ 은닉층 초기화
encoder = Encoder(vocab_inp_size, embedding_dim, units, BATCH_SIZE)