- PyTorch 教程
- PyTorch - 主页
- PyTorch - 简介
- PyTorch - 安装
- 神经网络的数学基础
- PyTorch - 神经网络基础
- 机器学习的通用工作流程
- 机器学习与深度学习
- 实现第一个神经网络
- 神经网络到功能块
- PyTorch - 术语
- PyTorch - 加载数据
- PyTorch - 线性回归
- PyTorch - 卷积神经网络
- PyTorch - 递归神经网络
- PyTorch - 数据集
- PyTorch - 对卷积的简介
- 从头开始训练卷积网络
- PyTorch - 卷积中的特征提取
- PyTorch - 卷积的可视化
- 使用卷积进行序列处理
- PyTorch - 词嵌入
- PyTorch - 递归神经网络
- PyTorch 有用资源
- PyTorch - 快速指南
- PyTorch - 有用资源
- PyTorch - 讨论
PyTorch - 对卷积的简介
卷积网络是关于从头开始构建 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}})
该方法包括用于训练和验证的不同逻辑。使用不同模式主要有两个原因 -
在训练模式下,Dropout 去掉一定比例的值,而这在验证或测试阶段不应该发生。
对于训练模式,我们计算梯度并改变模型的参数值,但在测试或验证过程中不需要反向传播。
广告