seresnet50训练自己的数据集_pytorch搭建卷积神经网络(alexnet、vgg16、resnet50)以及训练...

本文介绍了如何使用PyTorch搭建和训练Alexnet、VGG16和Resnet50卷积神经网络。通过修改预训练模型的最后一层适应自定义数据集,进行数据预处理、数据加载和模型训练,并展示了验证与测试过程。文章提供了完整的训练流程和代码链接。
摘要由CSDN通过智能技术生成

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

发布时间:2018-05-24 20:59,

浏览次数:868

, 标签:

pytorch

alexnet

vgg

resnet

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

(注:文章中所有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,还有图像翻转以及归一化。

data_transform = transforms.Compose([ transforms.Scale((224,224), 2), #对图像大小统一

transforms.RandomHorizontalFlip(), #图像翻转 transforms.ToTensor(),

transforms.Normalize(mea

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值