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

神经网络基础-神经网络补充概念-63-残差网络

概念

残差网络(Residual Network,ResNet)是一种深度卷积神经网络结构,旨在解决深层网络训练中的梯度消失和梯度爆炸问题,以及帮助训练非常深的网络。ResNet 在2015年被提出,其核心思想是引入了"残差块"(residual block)来克服训练深层网络时的优化问题。

传统的神经网络认为层与层之间是逐渐学习到更高级的特征表示的,但在实践中,增加层数可能会导致性能下降,这是因为深层网络在训练过程中可能会难以优化。ResNet 通过引入"跳跃连接"或"残差连接",使得网络可以学习残差(即原始特征)并将其添加到后续层的输出中,从而解决了这个问题。

一个残差块的结构

Input|
Convolution|
Batch Normalization|
ReLU|
Convolution|
Batch Normalization|
Output|
Addition (Residual Connection)|
ReLU

代码实现

import torch
import torch.nn as nnclass ResidualBlock(nn.Module):def __init__(self, in_channels, out_channels, stride=1):super(ResidualBlock, self).__init__()self.conv1 = nn.Conv2d(in_channels, out_channels, kernel_size=3, stride=stride, padding=1, bias=False)self.bn1 = nn.BatchNorm2d(out_channels)self.relu = nn.ReLU(inplace=True)self.conv2 = nn.Conv2d(out_channels, out_channels, kernel_size=3, stride=1, padding=1, bias=False)self.bn2 = nn.BatchNorm2d(out_channels)# 如果输入输出通道数不匹配,使用 1x1 卷积调整维度self.shortcut = nn.Sequential()if stride != 1 or in_channels != out_channels:self.shortcut = nn.Sequential(nn.Conv2d(in_channels, out_channels, kernel_size=1, stride=stride, bias=False),nn.BatchNorm2d(out_channels))def forward(self, x):residual = xout = self.conv1(x)out = self.bn1(out)out = self.relu(out)out = self.conv2(out)out = self.bn2(out)out += self.shortcut(residual)out = self.relu(out)return out# 创建一个残差块实例
residual_block = ResidualBlock(in_channels=64, out_channels=128, stride=2)
print(residual_block)
http://www.lryc.cn/news/129969.html

相关文章:

  • 【从0开始学架构笔记】01 基础架构
  • vue3+ts+vite使用el-breadcrumb实现面包屑组件,实现面包屑过渡动画
  • 【Java 动态数据统计图】动态数据统计思路案例(动态,排序,数组)四(116)
  • Chrome命令行开关
  • 元宇宙赛道加速破圈 和数软件抓住“元宇宙游戏”发展新风口
  • Vue的鼠标键盘事件
  • Bytebase 2.6.0 - ​支持通过 LDAP 配置 SSO,支持 RisingWave 数据库
  • C# 读取pcd、ply点云文件数据
  • LeetCode1387 将整数按权重排序
  • 正则表达式--Intellij IDEA常用的替换
  • 前端如何安全的渲染HTML字符串?
  • C++学习第十四天----for循环
  • 快速解决在进入浏览器时,明明连接了网络,但是显示你尚未连接,代理服务器可能有问题。
  • TypeScript入门指南
  • excel中定位条件,excel中有哪些数据类型、excel常见错误值、查找与替换
  • 19c_ogg搭建
  • 网络通信原理网络层TCP/IP协议(第四十三课)
  • yolov5封装进ros系统
  • Flowable 源码目录结构
  • 科大讯飞星火模型申请与chatgpt 3.5模型以及new bing的对比
  • 无涯教程-TensorFlow - 分布式计算
  • python+django+mysql项目实践五(信息搜索)
  • Python Opencv实践 - 图像透射变换
  • SpringBoot + Vue 微人事项目(第二天)
  • 【AIGC】 快速体验Stable Diffusion
  • Python入门【动态添加属性和方法、正则表达式概述、match函数的使用、常用匹配符、限定符 、限定符使用示例】(二十九)
  • 《Go 语言第一课》课程学习笔记(四)
  • 制定建立商务模式财务及企业管理信息系统的解决方案
  • UE Json Operate 解析嵌套数组
  • sd-webui安装comfyui扩展