一、背景
传统的神经网络,由于网络层数增加,会导致梯度越来越小,这样会导致后面无法有效的训练模型,这样的问题成为梯度消弭。为了解决这样的问题,引入残差神经网络(Residual Networks),残差神经网络的核心是”跳跃”+“残差块”。通过引入RN网络,可以有效缓解梯度消失的问题,可以训练更深的网络。
二、残差网络的基本模型
下图是一个基本残差块。它的操作是把某层输入跳跃连接到下一层乃至更深层的激活层之前,同本层输出一起经过激活函数输出。

当对H(x)进行求导时,x求导为1,这样就避免了F(X)导数过小,进而使梯度消失的问题。
有图就是将几个残差块连接在一起。

三、简单残差神经网络的实现
用Pytorch实现以下残差神经网络模型。

(1)导入包
import torch
from torch import nn
from torchvision import transforms
from torchvision import datasets
from torch.utils.data import DataLoader
import torch.nn.functional as F
import torch.optim as optim
import matplotlib.pyplot as plt
(2)数据准备
batch_size = 64
transform = transforms.Compose([
transforms.ToTensor(),
transforms.Normalize((0.1307, ), (0.3081, ))
])
train_dataset = datasets.MNIST(root='dataset/mnist',
train=True,
download=True,
transform=transform)
train_loader = DataLoader(dataset=train_dataset,
batch_size=batch_size,
shuffle=True)
test_dataset = datasets.MNIST(root='dataset/mnist',
train=False,
download=True,
transform=transform

该博客介绍了残差神经网络(ResNet)如何通过跳跃连接解决传统深度神经网络中的梯度消失问题,允许训练更深的模型。博主详细展示了如何用PyTorch构建一个简单的ResNet模型,包括数据预处理、模型定义、训练和测试过程,并在MNIST数据集上达到了99.25%的准确率。在后续工作中,博主计划进一步研究ResNet的不同变体和深度学习的相关知识。
&spm=1001.2101.3001.5002&articleId=127479966&d=1&t=3&u=14259e52d8ed430b92db4cea6873bec4)

被折叠的 条评论
为什么被折叠?



