卷积神经网络--猫狗系列之构建模型【ResNet50】

news/2024/11/6 6:54:37/

在上一期:卷积神经网络--猫狗系列之下载、导入数据集,如果测试成功就说明对数据的预处理工作已经完成,接下来就是构建模型阶段了:

据说建立一个神经网络模型比较简单,只要了解了各层的含义、不同层之间参数的传递等等,那么一个完整的网络模型就可以被容易地构建出来。(这对于我这种初学的同学来说嘎嘎困难哈哈)

不扯了,加载一个预训练模型---ResNet50:

借助torchvision库,能够很容易的获得一组已经训练好的模型,这些模型大多数接收一个称为pretrained的参数,当这个参数为True时,它会下载为ImageNet分类问题调整好的权重。

network1=models.resnet50(weights=models.ResNet50_Weights.DEFAULT)

紧接着,我们需要冻结所有层,所有的权重不会随着训练而更新:

for param in network1.parameters():    param.requires_grad=False

然后!由于这个预训练模型不是专门针对这样猫猫狗狗的二分类问题,所以,我们需要将最后一层的输出特征从1000改为2。(默认是1000类)

首先,我们需要知道最后一层的名字,通过network1查看一下,告诉大家怎么操作:

将network1输在pycharm中,把光标放在这一行,然后快捷键【shift+alt+E】(也可以鼠标选中然后右键专门运行这一行,这其实就是pycharm的交互模式)

得到这样的界面:

【可以知道最后一层是一个全连接层,名为fc。其他的东西以后有时间再分析,就是一些卷积、池化以及激活操作】

所以,我们就要将最后一层替换为输出特征为2的全连接层:

import torch.nn as nnnetwork1.fc=nn.Linear(2048,2)

此时,该层为新的层,所以它的requires_grad=True,这样整个网络仅有这一层可以更新权重。

打印更新后的网络:

该猫猫狗狗的模型构建代码总结:

from torchvision import modelsimport torch.nn as nnimport torch.optim as optim#网络搭建network1=models.resnet50(weights=models.ResNet50_Weights.DEFAULT)for param in network1.parameters():    param.requires_grad=Falsenetwork1.fc=nn.Linear(2048,2)

利用已经训练好的模型主要目的是它能够提取出非常好的特征,最后一层接收前面层提取的特征,然后误差反向传播,仅更新这一层的权重,不断迭代。

【此猫狗系列会继续更】


http://www.ppmy.cn/news/698670.html

相关文章

浩泽净水机——以核心科技赢得信赖

近年来,家用净水机市场在国内取得快速的发展,越来越多的家用净水机已经逐步走入寻常百姓家。但是,由于净水行业在国内起步比较晚,消费者对家用净水机的认识还是有所欠缺,所以消费者在选购时需多方面考虑。 首先&#x…

High Performance Visual Tracking with Siamese Region Proposal Network(SiamRPN)

High Performance Visual Tracking with Siamese Region Proposal Network(SiamRPN,CVPR2018) 主要贡献: 提出了SiamRPN跟踪器,首次将端到端的离线训练方式,应用到了大尺度的图像跟踪任务上在在线跟踪过程…

乱象丛生or一路光明,看SSD市场发展现状

乱象丛生or一路光明,看SSD市场发展现状 近年来,SSD固态硬盘的涌现无疑是主存储技术上的重大突破,它对传统的机械存储是具有颠覆性及破坏性,尤其体现在家用消费领域里。SSD任凭着革命性的多任务处理能力,卓越的读写性能…

C++中的vector使用详解及重要部分底层实现

本篇文章会对vector的语法使用进行详解。同时,还会对重要难点部分的底层实现进行讲解。其中有vector的迭代器失效和深拷贝问题。希望本篇文章的内容会对你有所帮助。 目录 一、vector 简单概述 1、1 C语言中数组的不便 1、2 C中的动态数组容器vector 二、vector的常…

Qt Example各例子技术点说明(六)

说明: 下面的XX.XX.XX为Qt的版本号,如:5.14.1。 下面总结的都是以Qt的5.14.1版本来说明的,未来的版本也许和这有些不同。 因为Qt自带的例子很多,本博文是第6部分,第1、2、3、4、5部分请参见如下链接&…

直击|OPPO宣布推出新系列Reno 产品将于4月发布

新浪科技讯 3月11日上午消息,OPPO副总裁、中国大陆事业部总裁沈义人今日在微博宣布,OPPO正式推出新系列Reno。 此前,沈义人曾在微博上回复新浪手机称,今年没有R19的发布,这引发了外界对OPPO旗下产品系列今年将发生调整…

HOT33-排序链表

leetcode原题链接:排序链表 题目描述 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 示例 1: 输入:head [4,2,1,3] 输出:[1,2,3,4]示例 2: 输入:head [-1,5,3,4,0] 输出…

OPPO K9试水“捆绑销售”,消费者“赚了”还是“亏了”?

【原创】 号称“充电5分钟,开黑两小时”的OPPO新品K9于5月6日正式发布,这句“似曾相识”的OPPO“过气”广告语,又重新出现在了江湖,说是词穷也好,为了突出手机卖点也罢,反正新品是上了。 出了新品&#x…