人工智能学习pyTorch的ResNet残差模块示例详解
作者:Swayzzu 时间:2022-05-04 21:45:22
1.定义ResNet残差模块
一个block中,有两个卷积层,之后的输出还要和输入进行相加。因此一个block的前向流程如下:
输入x→卷积层→数据标准化→ReLU→卷积层→数据标准化→数据和x相加→ReLU→输出out
中间加上了数据的标准化(通过nn.BatchNorm2d实现),可以使得效果更好一些。
①各层的定义
②前向传播
在前向传播中输入x,过程中根据前向流程,调用上面定义的层即可。
如此,便定义好了一个残差的模块。
2.ResNet18的实现
此处的ResNet18并没有涉及到太多细节,只是一个大致的内容。
在初始化的时候,定义好所需要使用的模块,根据上面定义好的残差模块,调用即可。在这里使用了4次残差模块,将通道数从输入的3(也就是RGB),变成了512通道。也就是最终提取的高级特征。提取完特征,直接输入给Linear方法,得到图片在10种图片类型上的结果,用于预测以及损失值的求解。
①各层的定义
②前向传播
同样的,调用上面定义好的层,根据流程传播即可。
3.测试ResNet18
如下图,输入的是2张图,RGB,长宽均是32的数据。
通过ResNet18之后,输出的是2张图,每张图对应10种类型的不同取值logits。
过程中的通道数目的转换如下面的结果所示:3→64→128→256→512→512
过程中的尺寸转换,根据设置的卷积核,以及步长,会有不同的结果。但总体都是为了得到更高级的特征,最终输入全连层,得到Logits。
来源:https://blog.csdn.net/Swayzzu/article/details/121156605
标签:pyTorch,ResNet,人工智能,残差模块
0
投稿
猜你喜欢
Python多进程协作模拟实现流程
2021-07-01 17:52:38
详解Python Flask框架的安装及应用
2022-06-20 11:12:50
用SQL语句添加删除修改字段、一些表与字段的基本操作、数据库备份等
2024-01-26 16:53:22
python包合集shutil示例代码详解
2022-03-28 12:04:27
Python通过递归获取目录下指定文件代码实例
2021-02-24 15:08:51
MySQL数据库本地备份和双机相互备份
2008-05-27 12:25:00
利用Axure封装视觉标准
2008-10-21 10:42:00
关于SQL中CTE(公用表表达式)(Common Table Expression)的总结
2012-08-21 10:22:21
浅谈Django自定义模板标签template_tags的用处
2023-03-13 11:21:08
Python tkinter实现简单加法计算器代码实例
2024-01-03 03:58:49
SQL Server数据库中伪列及伪列的含义详解
2024-01-27 19:19:19
Anaconda 离线安装 python 包的操作方法
2021-08-11 22:38:27
Python制作表白爱心合集
2022-07-13 05:53:43
交互设计师应该具备哪些素质
2009-03-12 12:21:00
python matlibplot绘制3D图形
2023-05-21 18:47:36
Python中defaultdict与dict的差异详情
2023-10-02 19:39:29
sqlserver CONVERT()函数用法小结
2024-01-19 05:14:17
Vue为何弃用Ajax,选择Axios?ajax与axios的区别?
2024-04-30 10:38:52
PHP中判断变量为空的几种方法分享
2024-06-05 09:35:25
Python超简单容易上手的画图工具库(适合新手)
2021-12-06 04:05:23