앞에서 정의해 두었던 함수를 이용하여 모델을 학습시킵니다. 이때 학습 과정 중에 생성된 이미지도 확인해 보겠습니다.
코드 13-10 모델 학습
import numpy as np
num_epochs = 30
history_da = {'train_loss':[],'val_loss':[]}
loss_fn = torch.nn.MSELoss()
for epoch in range(num_epochs):
print('EPOCH %d/%d' % (epoch + 1, num_epochs))
train_loss=train_epoch(
encoder=encoder,
decoder=decoder,
device=device,
dataloader=train_loader,
loss_fn=loss_fn,
optimizer=optim, noise_factor=0.3) ------ 모델 학습 함수(train_epoch)를 이용하여 모델 학습
val_loss = test_epoch(
encoder=encoder,
decoder=decoder,
device=device,
dataloader=test_loader,
loss_fn=loss_fn, noise_factor=0.3) ------ 모델 검증(테스트) 함수(test_epoch)를 이용하여 테스트
history_da['train_loss'].append(train_loss)
history_da['val_loss'].append(val_loss)
print('\n EPOCH {}/{} \t train loss {:.3f} \t val loss {:.3f}'.format(epoch + 1, num_epochs,train_loss,val_loss))
plot_ae_outputs(encoder, decoder, noise_factor=0.3)