学习笔记16:残差网络
转自:https://www.cnblogs.com/miraclepbc/p/14368116.html
产生背景
随着网络深度的增加,会出现网络退化的现象。
网络退化现象形象化解释是在训练集上的loss不增反降。
这说明,浅层网络的训练效果要好于深层网络
一个想法就是,如果将浅层网络的特征传到深层网络,那么深层网络的训练效果不会比浅层网络差
举个例子,就是假设总共有50层,20层的训练结果就比50层的好了,因此可以将18层与98层之间连接一个直接映射
这样随着网络的加深,训练效果就不会降低了
残差块
残差块的数学表示:
xl+1=xl+F(xl,Wl)𝑥𝑙+1=𝑥𝑙+𝐹(𝑥𝑙,𝑊𝑙)
xl𝑥𝑙相当于是一个直接映射,F(xl,Wl)𝐹(𝑥𝑙,𝑊𝑙)是残差部分
在这个网络结构中,右侧指的就是残差部分,左侧是直接映射
代码实现
class ResnetbasicBlock(nn.Module):
def __init__(self, in_channels, out_channels):
super().__init__()
self.conv1 = nn.Conv2d(in_channnels, out_channels, kernel_size = 3, padding = 1, bias = False)
self.bn1 = nn.BatchNorm2d(out_channels)
self.conv2 = nn.Conv2d(out_channels, out_channels, kernel_size = 3, padding = 1, bias = False)
self.bn2 = nn.BatchNorm2d(out_channels)
def forward(self, x):
residual = x
out = self.conv1(x)
out = F.relu(self.bn1(out), inplace = True)
out = self.conv2(out)
out = F.relu(self.bn2(out), inplace = True)
out = out + residual
return F.relu(out)
分类:
AI
, AI / Pytorch
标签:
Pytorch
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
2023-06-04 Kubescape入门