Pytorch-introduction-to-convents

提供:Dev Guides
移動先:案内検索

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}})

このメソッドには、トレーニングと検証のためのさまざまなロジックが含まれています。 異なるモードを使用する主な理由は2つあります-

  • トレインモードでは、ドロップアウトにより値のパーセンテージが削除されますが、これは検証またはテストフェーズでは発生しません。
  • トレーニングモードでは、勾配を計算し、モデルのパラメーター値を変更しますが、テストまたは検証段階では逆伝播は必要ありません。