pytorch搭建卷积神经网络(alexnet、vgg16、resnet50)以及训练

文末有代码和数据集链接!!!!

(注:文章中所有path指文件的路径)

因毕业设计需要,接触卷积神经网络。由于pytorch方便使用,所以最后使用pytorch来完成卷积神经网络训练。

接触到的网络有Alexnet、vgg16、resnet50,毕业答辩完后,一直在训练Alexnet。

1.卷积神经网络搭建

  pytorch中有torchvision.models,里面有许多已搭建好的模型。如果采用预训练模型,只需要修改最后分类的类别。

虽然这样但是我还是inception v3模型修改上失败。

alexnet和vgg16修改的是全连接层的最后一层。

model.classifier = nn.Sequential(nn.Linear(25088, 4096),      #vgg16
                                 nn.ReLU(),
                                 nn.Dropout(p=0.5),
                                 nn.Linear(4096, 4096),
                                 nn.ReLU(),
                                 nn.Dropout(p=0.5),
                                 nn.Linear(4096, 2))
alexnet_model.classifier = nn.Sequential(
            nn.Dropout(),
            nn.Linear(256 * 6 * 6, 4096),
            nn.ReLU(inplace=True),
            nn.Dropout(),
            nn.Linear(4096, 4096),
            nn.ReLU(inplace=True),
            nn.Linear(4096, 2),
        )

resnet50只需要修改最后的fc层。

model.fc = nn.Linear(2048, 2)

简单的修改,就可以完成。

如果采用要采用预训练模型的话,还需要对修改处参数的进行修改。(vgg16和alexnet需要,resnet50不需要,原因我认为是修改的地方不同)

 for index, parma in enumerate(model.classifier.parameters()):
     if index == 6:
        parma.requires_grad = True

2.训练

这张图是我所认为的神经网络训练的七步吧。

(1) 模型的创建上文已介绍。

(2) 数据集的建立:在PyTorch中对于数据集的文件格式有一定的要求。如图4-10所示,在目录下分别建cat和dog文件夹,这就相当于做标签

(3)对数据集进行预处理:这里采用的是数据增强变化的方法,包括对图片大小进行压缩和输入像素统一,都为224224,还有图像翻转以及归一化。


                
评论 54
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值