猫狗二分类-pytorch练习项目

这个练习项目来自:西西嘛呦 - 博客园 (cnblogs.com)

https://www.cnblogs.com/xiximayou/category/1665574.html

感觉这个博主写了挺多有意思的项目的~代码风格我也很喜欢。对于我这样一个刚刚开始入门深度学习和pytorch的新手真的是帮助很大了。

分享一下我整理的【猫狗数据集】使用学习率衰减策略并边训练边测试 - 西西嘛呦 - 博客园 (cnblogs.com)这个博客里的代码,包含了数据集(训练、测试、验证),直接放在D盘根目录下不用修改路径就能运行了。运行在D:/mycode/dogs-vs-cats/train/路径下的main.py。

链接:https://pan.baidu.com/s/1KnhRiaEGhvkL0tzjFnp9Ug
提取码:zx9t

关键代码:

model =torchvision.models.resnet18(pretrained=False)
model.fc = nn.Linear(model.fc.in_features,2,bias=False)

使用imagenet上训练好的resnet模型。因为imagenet是1000类,此时猫狗分类是2类,所以要训练最后一个输出头改成2类。

torchvision.models中提供了很多现成的网络架构如下:

import torchvision.models as models
resnet18 = models.resnet18()
alexnet = models.alexnet()
vgg16 = models.vgg16()
squeezenet = models.squeezenet1_0()
densenet = models.densenet161()
inception = models.inception_v3()
googlenet = models.googlenet()
shufflenet = models.shufflenet_v2_x1_0()
mobilenet = models.mobilenet_v2()
resnext50_32x4d = models.resnext50_32x4d()
wide_resnet50_2 = models.wide_resnet50_2()
mnasnet = models.mnasnet1_0()

 

相较原作者的修改有DataLoader中的num_workers。我电脑上运行只能让num_workers=0,即只能单线程处理,否则会报错。(也许是我的gpu太差?)

train_loader = DataLoader(train_data, batch_size=batch_size, shuffle=True, num_workers=0)

还有跟好兄弟hh讨论后得知自己电脑跑batch_size不要超过64……不然很容易跑崩。他推荐我用32。在main.py中修改batch_size即可。

batch_size=128

原作者学习率衰减之后还有:

利用tensorboard可视化训练和测试过程     :用进度条可视化训练进度

【猫狗数据集】从命令行接收参数  :用到arg

使用top1和top5准确率衡量模型  :

Top-1 Accuracy和Top-5 Accuracy:

我们知道ImageNet有大概1000个分类,而模型预测某张图片时,会给出1000个按概率从高到低的类别排名,

所谓的Top-1 Accuracy是指排名第一的类别与实际结果相符的准确率,而Top-5 Accuracy是指排名前五的类别包含实际结果的准确率。

 

使用预训练的resnet18模型  :即linear probe方法。冻住骨干网络,只训练某些层。

计算数据集的平均值和方差    :平均值和方差用于预处理中的归一化

读取数据集的第二种方式  :之前使用DataLoader

对一张张图像进行预测(而不是测试集)可视化resnet18的输出  :学习使用模型进行预测了

可视化resnet18的输出  :看看每一层处理图片后是什么样子

 

想学习的话再我分享的代码上继续修改即可。但是我没有细看了。(先码住,以后需要用继续看)

 

posted @ 2022-11-13 12:22  实数集  阅读(253)  评论(0编辑  收藏  举报