인코더와 디코더 객체를 초기화하고, 모델의 훈련 과정에 필요한 손실 함수와 옵티마이저를 지정합니다.
코드 13-4 손실 함수와 옵티마이저 지정
encoder = Encoder(encoded_space_dim=4, fc2_input_dim=128)
decoder = Decoder(encoded_space_dim=4, fc2_input_dim=128)
encoder.to(device)
decoder.to(device)
params_to_optimize = [
{'params': encoder.parameters()},
{'params': decoder.parameters()}
] ------ 인코더와 디코더에서 사용할 파라미터를 다르게 지정
optim = torch.optim.Adam(params_to_optimize, lr=0.001, weight_decay=1e-05)
loss_fn = torch.nn.MSELoss()
오토인코더에서 가장 널리 사용되는 손실 함수는 ‘평균 제곱 오차’와 ‘이진 크로스 엔트로피’입니다. 입력 값이 (0,1) 범위에 있으면 이진 크로스 엔트로피를 사용하고, 그렇지 않으면 평균 제곱 오차를 사용합니다. 옵티마이저는 아담을 사용했지만 알엠에스프롭(RMSProp) 또는 아다델타(adadelta) 같은 옵티마이저를 이용하여 성능을 비교해 보는 것도 학습에 도움이 많이 되니, 옵션을 변경하여 테스트를 진행해 보기 바랍니다.