PyTorch-수녀원 소개

Convents는 처음부터 CNN 모델을 구축하는 것입니다. 네트워크 아키텍처에는 다음 단계의 조합이 포함됩니다.

  • Conv2d
  • MaxPool2d
  • 정류 된 선형 단위
  • View
  • 선형 레이어

모델 훈련

모델 학습은 이미지 분류 문제와 동일한 프로세스입니다. 다음 코드 스 니펫은 제공된 데이터 세트에 대한 학습 모델의 절차를 완료합니다.

def fit(epoch,model,data_loader,phase 
= 'training',volatile = False):
   if phase == 'training':
      model.train()
   if phase == 'training':
      model.train()
   if phase == 'validation':
      model.eval()
   volatile=True
   running_loss = 0.0
   running_correct = 0
   for batch_idx , (data,target) in enumerate(data_loader):
      if is_cuda:
         data,target = data.cuda(),target.cuda()
         data , target = Variable(data,volatile),Variable(target)
      if phase == 'training':
         optimizer.zero_grad()
         output = model(data)
         loss = F.nll_loss(output,target)
         running_loss + = 
         F.nll_loss(output,target,size_average = 
         False).data[0]
         preds = output.data.max(dim = 1,keepdim = True)[1]
         running_correct + = 
         preds.eq(target.data.view_as(preds)).cpu().sum()
         if phase == 'training':
            loss.backward()
            optimizer.step()
   loss = running_loss/len(data_loader.dataset)
   accuracy = 100. * running_correct/len(data_loader.dataset)
   print(f'{phase} loss is {loss:{5}.{2}} and {phase} accuracy is {running_correct}/{len(data_loader.dataset)}{accuracy:{return loss,accuracy}})

이 방법에는 학습 및 검증을위한 다양한 논리가 포함됩니다. 다른 모드를 사용하는 두 가지 주요 이유가 있습니다.

  • 기차 모드에서 드롭 아웃은 유효성 검사 또는 테스트 단계에서 발생하지 않아야하는 값의 백분율을 제거합니다.

  • 훈련 모드의 경우 기울기를 계산하고 모델의 매개 변수 값을 변경하지만 테스트 또는 검증 단계에서는 역 전파가 필요하지 않습니다.