卷积神经网络(Convents)是CNN从零开始打造的模式。网络体系结构将包含以下步骤的组合:Conv2d、MaxPool2d、Rectified Linear、Unit(线性修正单元)、View、Linear Layer(线性层)。本文主要是PyTorch 卷积神经网络(Convents) 训练模型简介

    1、训练模型

    训练模型是类似图像分类问题的过程。 下面的代码片段在提供的数据集上完成了训练模型的过程:

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

    该方法包括不同的训练和验证逻辑。使用不同的模式有两个主要原因:

    • 在训练模式中,退出删除了一定百分比的值,这在验证或测试阶段不应该发生。
    • 对于训练模式,我们计算梯度并改变模型的参数值,但在测试或验证阶段不需要反向传播。

    推荐文档