当前位置: 首页 > news >正文

人工智能-深度学习之残差网络(ResNet)

随着我们设计越来越深的网络,深刻理解“新添加的层如何提升神经网络的性能”变得至关重要。更重要的是设计网络的能力,在这种网络中,添加层会使网络更具表现力, 为了取得质的突破,我们需要一些数学基础知识。

ResNet沿用了VGG完整的\(3\times 3\)卷积层设计。 残差块里首先有2个有相同输出通道数的\(3\times 3\)卷积层。 每个卷积层后接一个批量规范化层和ReLU激活函数。 然后我们通过跨层数据通路,跳过这2个卷积运算,将输入直接加在最后的ReLU激活函数前。 这样的设计要求2个卷积层的输出与输入形状一样,从而使它们可以相加。 如果想改变通道数,就需要引入一个额外的\(1\times 1\)卷积层来将输入变换成需要的形状后再做相加运算。 残差块的实现如下:

from mxnet import np, npx
from mxnet.gluon import nn
from d2l import mxnet as d2lnpx.set_np()class Residual(nn.Block):  #@savedef __init__(self, num_channels, use_1x1conv=False, strides=1, **kwargs):super().__init__(**kwargs)self.conv1 = nn.Conv2D(num_channels, kernel_size=3, padding=1,strides=strides)self.conv2 = nn.Conv2D(num_channels, kernel_size=3, padding=1)if use_1x1conv:self.conv3 = nn.Conv2D(num_channels, kernel_size=1,strides=strides)else:self.conv3 = Noneself.bn1 = nn.BatchNorm()self.bn2 = nn.BatchNorm()def forward(self, X):Y = npx.relu(self.bn1(self.conv1(X)))Y = self.bn2(self.conv2(Y))if self.conv3:X = self.conv3(X)return npx.relu(Y + X)

此代码生成两种类型的网络: 一种是当use_1x1conv=False时,应用ReLU非线性函数之前,将输入添加到输出。 另一种是当use_1x1conv=True时,添加通过\(1 \times 1\)卷积调整通道和分辨率。

下面我们来查看输入和输出形状一致的情况。

blk = Residual(3,3)
X = torch.rand(4, 3, 6, 6)
Y = blk(X)
Y.shape

 torch.Size([4, 3, 6, 6])

我们也可以在增加输出通道数的同时,减半输出的高和宽。

blk = Residual(3,6, use_1x1conv=True, strides=2)
blk(X).shape

torch.Size([4, 6, 3, 3])

http://www.lryc.cn/news/230857.html

相关文章:

  • arm2 day6
  • RxSwift和Combine的相同点和使用例子
  • [Linux打怪升级之路]-信号的保存和递达
  • 【科研新手指南3】chatgpt辅助论文优化表达
  • 在应用内维护域名缓存时遇到的问题
  • 网络支付安全:面临的风险与防范策略
  • 『亚马逊云科技产品测评』活动征文|阿里云服务器亚马逊服务器综合评测
  • javascript原来还可以这样比较两个日期(直接使用new Date)
  • [云原生案例2.4 ] Kubernetes的部署安装 【通过Kubeadm部署Kubernetes高可用集群】
  • PP-ChatOCRv2、PP-TSv2、大模型半监督学习工具...PaddleX新特性等你来pick!
  • HarmonyOS 学习记录
  • 阿里云 业务集群的冗余、备份、监控方案
  • 无人驾驶的未来 后疫情时代如何抵达
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • 【第2章 Node.js基础】2.6 Node.js 的Buffer数据类型
  • reactive和effect,依赖收集触发依赖
  • 【C#学习】backgroundWorker控件
  • Istio学习笔记-部署模型
  • 磁盘调度算法
  • 力扣题库2. 两数相加
  • 【Linux】第十六站:进程地址空间
  • 基于Springboot的影城管理系统(有报告)。Javaee项目,springboot项目。
  • 如何在面试中胜出?接口自动化面试题安排上
  • 联邦学习研究综述笔记
  • RedisTemplate乱码问题
  • Java用户和内核交互图
  • 2023.11.14使用bootstrap制作一个简洁的前端注册登录页
  • Avatar虚拟形象解决方案,趣味化的视频拍摄与直播新体验
  • MongoDB备份与恢复以及导入导出
  • 如何挑选猫主食罐头?宠物店自用的5款猫主食罐头推荐!