ResNet(残差网络)详解

ResNet(残差网络)详解

ResNet(残差网络)是一种深度神经网络架构,主要用于解决深度学习中的梯度消失和梯度爆炸问题,特别在深层网络的训练中表现出色。

ResNet 的核心概念

1. 残差学习

  • 在传统的深度神经网络中,每一层学习直接映射: H ( x ) H(x) H(x)
  • 在残差网络中,层学习残差映射: F ( x ) = H ( x ) − x F(x) = H(x) - x F(x)=H(x)x
  • 模型的目标是优化残差映射,而不是优化直接映射。

2. 残差块(Residual Block)

  • 残差块包含跳跃连接(或快捷连接),允许输入 x x x 绕过一个或多个层。
  • 一个残差块可以表示为: y = F ( x , W i ) + x y = F(x, {W_i}) + x y=F(x,Wi)+x
  • 这里, F ( x , W i ) F(x, {W_i}) F(x,Wi) 表示权重为 W i {W_i} Wi 的层所学习的残差映射, x x x 是块输入, y y y 是块输出。

3. 跳跃连接(Skip Connection)

  • 跳跃连接直接将输入添加到后续层的输出。
  • 它们有助于缓解梯度消失问题,因为梯度可以通过这些连接直接传播。

数学原理

1. 残差学习公式

  • 残差学习可以数学表示为:

    y = F ( x , W i ) + x y = F(x, {W_i}) + x y=F(x,Wi)+x

    其中 F ( x , W i ) F(x, {W_i}) F(x,Wi) 是权重为 W i {W_i} Wi 的层的输出, x x x 是输入, y y y 是输出。

2. 梯度传播

  • 在残差网络中,梯度直接通过跳跃连接传播,从而减少梯度消失的风险。
  • 梯度更新公式中包含了跳跃连接部分,帮助保持梯度的稳定性。

代码

import tensorflow as tf
from tensorflow.keras.layers import Input, Conv2D, BatchNormalization, ReLU, Add

def residual_block(x, filters, kernel_size=3):
    y = Conv2D(filters, kernel_size, padding='same')(x)
    y = BatchNormalization()(y)
    y = ReLU()(y)
    y = Conv2D(filters, kernel_size, padding='same')(y)
    y = BatchNormalization()(y)
    out = Add()([x, y])  # 跳跃连接
    out = ReLU()(out)
    return out

# 输入层
inputs = Input(shape=(64, 64, 3))

# 创建残差块
x = Conv2D(64, 3, padding='same')(inputs)
x = residual_block(x, 64)
x = residual_block(x, 64)

# 构建模型
model = tf.keras.Model(inputs=inputs, outputs=x)

model.summary()

这个示例创建了一个包含两个残差块的简单 ResNet 模型。每个残差块包含两个卷积层和一个跳跃连接,通过 Add() 将输入和卷积层的输出相加。这种结构有助于缓解深层网络中的梯度消失问题,使得可以构建更深的网络结构

ResNet 与传统神经网络的区别

  • 传统深度网络试图直接学习输入到输出的映射。
  • ResNet 通过残差块学习输入与输出之间的差异(残差)。
  • 这种方法使得网络可以更深,同时保持训练的有效性。

ResNet 的引入是深度学习领域的一次重大创新,它使得训练非常深的网络成为可能,显著提高了图像识别和分类任务的性能。

  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

h52013141

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值