더북(TheBook)

다음은 모델 훈련에 대한 출력 결과입니다.

Epoch 1 Batch 0 Loss 4.5296
Epoch 1 Batch 100 Loss 2.1536
Epoch 1 Batch 200 Loss 1.8774
Epoch 1 Batch 300 Loss 1.7457
...(중간 생략)...
Epoch 10 Batch 0 Loss 0.0844
Epoch 10 Batch 100 Loss 0.0848
Epoch 10 Batch 200 Loss 0.0920
Epoch 10 Batch 300 Loss 0.1320
Epoch 10 Loss 0.1022
Time taken for 1 epoch 902.3556807041168 sec

훈련된 모델 평가를 시각화하여 보여 줍니다.

코드 10-38 모델 평가 및 시각화를 위한 함수

def evaluate(sentence):
    attention_plot = np.zeros((max_length_targ, max_length_inp))

    sentence = preprocess_sentence(sentence)

    inputs = [inp_lang.word_index[i] for i in sentence.split(' ')]
    inputs = tf.keras.preprocessing.sequence.pad_sequences([inputs],
                                                           maxlen=max_length_inp,
                                                           padding='post')
    inputs = tf.convert_to_tensor(inputs)
    result = ''
    hidden = [tf.zeros((1, units))]
    enc_out, enc_hidden = encoder(inputs, hidden)
    dec_hidden = enc_hidden
    dec_input = tf.expand_dims([targ_lang.word_index['<start>']], 0)

    for t in range(max_length_targ):
        predictions, dec_hidden, attention_weights = decoder(dec_input,
                                                             dec_hidden,
                                                             enc_out)
        attention_weights = tf.reshape(attention_weights, (-1,)) ------ 어텐션 가중치
        attention_plot[t] = attention_weights.numpy()
        predicted_id = tf.argmax(predictions[0]).numpy()
        result += targ_lang.index_word[predicted_id] + ' '
        if targ_lang.index_word[predicted_id] == '<end>':
            return result, sentence, attention_plot
        dec_input = tf.expand_dims([predicted_id], 0) ------ 예측된 ID가 모델에 피드백됩니다.

    return result, sentence, attention_plot
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.