pytorch图像分类实战

pytorch图像分类实战

在这里插入图片描述

1. 数据集展示
训练集图片和测试集图片分别存放在train和vaild文件夹中,文件夹1,2,3…表示类别。
在这里插入图片描述在这里插入图片描述

2. 导入包
在这里插入图片描述

3. 读取数据和预处理
设置数据存储路径
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
4. 加载模型
在这里插入图片描述
在这里插入图片描述
param.requires_grad=False设置网络参数param迭代训练过程不更新。在这里插入图片描述models.resnet18()中的参数pretrained设置为True,表示可更新resnet18模型的参数。set_paremeter_requires_grad()冻住resnet18,不能更新参数。model_ft.fc.in_features表示找到resnet18中叫做fc的网络层,并获取in_features的值。model_ft.fc=nn.Linear(num_ftrs,102)重新定义resnet18的fc层。不清楚模型结构或者名称,可以打印出来看在这里插入图片描述
best.pt文件用于保存模型
params_to_update用于保存需要更新的model参数

5. 优化器设置
在这里插入图片描述
使用optim提供的Adam优化器,传入需要更新的参数params_to_update和初始化的学习率lr。
scheduler是定义的学习率衰减器,通过其调用step()进行累计计数,每累计到step_size,学习率衰减为原来的gamma倍。

6.迭代训练在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
optimizer.param_groups[0][‘lr’]从优化中获取初始化的学习率
在这里插入图片描述

7. 训练之前冻住的所有层
在fc全连接层训练好之后,解冻其他层,并重新训练所有层。
在这里插入图片描述
8. 加载训练好的模型在这里插入图片描述
9.测试在这里插入图片描述
在这里插入图片描述
需要将预测的结果preds_tensor由tenser转化为numpy,gpu直接调用numpy(),cpu需调用cpu().numpy()。

10.数据展示在这里插入图片描述
image*np.array((0.229,0.224,0.225))+np.array((0.485,0.456,0.406))对数据进行归一化还原。

image.transpose():

如果图片image的大小为cxhxw,image.transpose(1,2,0)表示将image的维度转为hxwxc。

Batchnorm2d:
在卷积神经网络的卷积层之后总会添加BatchNorm2d进行数据的归一化处理,这使得数据在进行Relu之前不会因为数据差异过大而导致网络性能的不稳定。

nn.Dropout(0.5):

表示剪枝神经网络枝干,避免网络过拟合,0.5表示剪枝的程度。

batch_size和epoch:

在神经网络模型训练时,比如有1000个样本,把这些样本分为10批,就是10个batch。每个批(batch)的大小为100,就是batch_size=100。
每次模型训练,更新权重时,就拿一个batch的样本来更新权重。epoch表示需要重复遍历1000个样本的次数。

参考:
1.https://blog.csdn.net/weixin_45436729/article/details/124766002
2.https://ke.gupaoedu.cn

  • 0
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值