① 임베딩층은 단어당 하나의 벡터를 저장합니다. 임베딩이 호출되면 단어 인덱스 시퀀스를 벡터 시퀀스로 변환합니다. 훈련 후 유사한 의미를 가진 단어는 종종 유사한 벡터를 갖습니다. 임베딩층 다음으로 RNN의 변형인 LSTM층이 있습니다. LSTM층은 유닛 64개로 구성되어 있고, 이후에 유닛 64개로 구성된 밀집층이 존재하며, 렐루 활성화 함수를 사용합니다. 또한, 마지막으로 출력층은 하나의 유닛으로 구성되며, 소프트맥스를 활성화 함수로 사용합니다.
이제 모델을 훈련시킵니다.
코드 8-18 모델 훈련
model.compile(loss='binary_crossentropy',
optimizer=tf.keras.optimizers.Adam(1e-4), metrics=['accuracy'])
history = model.fit(train_batches, epochs=5, validation_data=test_batches,
validation_steps=30)
다음은 모델 훈련을 출력한 결과입니다.
Epoch 1/5
2500/2500 [==============================] - 612s 245ms/step - loss: 0.6930 - accuracy: 0.5056 - val_loss: 0.6937 - val_accuracy: 0.4900
Epoch 2/5
2500/2500 [==============================] - 598s 239ms/step - loss: 0.6881 - accuracy: 0.5210 - val_loss: 0.6776 - val_accuracy: 0.5533
Epoch 3/5
2500/2500 [==============================] - 593s 237ms/step - loss: 0.6675 - accuracy: 0.5640 - val_loss: 0.6696 - val_accuracy: 0.5500
Epoch 4/5
2500/2500 [==============================] - 592s 237ms/step - loss: 0.6459 - accuracy: 0.6447 - val_loss: 0.6386 - val_accuracy: 0.6633
Epoch 5/5
2500/2500 [==============================] - 584s 234ms/step - loss: 0.6407 - accuracy: 0.6562 - val_loss: 0.6557 - val_accuracy: 0.6467