하루 하루

펭귄브로의 3분 딥러닝 파이토치맛 _ 3일차 본문

IT/Artificial intelligence

펭귄브로의 3분 딥러닝 파이토치맛 _ 3일차

san_deul 2020. 4. 17. 23:50

DNN 

0. 1~3 번 epoch 만큼 반복 

 

1. 신경망 학습하기

train (model, train_loader, optimizer)

2. 신경망 테스트하기 

test_loss, test_accuracy = evaluate( model, test_loader )

3. 결과 출력하기 

print('[{}] Test Loss: {:.4f}, Accuracy: {:.2f}%'.format(epoch,test_loss,test_accuracy))

 

 

 

신경망 학습하기 

model.train ( )으로 학습 모드 설정후에 for 문으로 배치 데이터 만큼만 가져와서 신겸망을 학습한다.

 

우선, 입력 data와 목표 target 값을 가져와서 device로 보낸다.  ( device 는 GPU 로 앞서서 설정한 상황 )

다음으로 기울기를 계산하고 해당 기울기에 대한 입력 data의 output을 계산한다.

output과 target 값의 차이를 계산하는 손실함수를 F.cross_entropy( output, target ) 으로 호출해

loss에 저장하고, loss.backward( ) 를 통해 손실함수를 미분한다. 

마지막으로 optimizer.step( ) 으로 신경망의 가중치를 수정한다. 

 

 

신경망 테스트하기 

model.eval ( )으로 테스트 모드 설정후에 for 문으로 배치 데이터 만큼만 가져와서 신겸망을 학습한다.

 

우선, 입력 data와 목표 target 값을 가져와서 device로 보낸다.  ( device 는 GPU 로 앞서서 설정한 상황 )

다음으로 만들어진 신경망에 입력 data를 넣어서 output을 계싼한 다음 오차를 계산한다.

오차를 계산할 때는 test_loss += F.cross_entropy(output,target, reduction='sum').item() 를 사용한다.

 

return 값으로 test_loss, test_accuracy 

 

 

 

 

 

Comments