五一假期结束后的一周,又继续开始神经网络与深度学习这门课程,本周讲解内容主要是卷积神经网络,下文将介绍掌握它所需要的基础知识。
1、卷积神经网络基础
1.1深度学习介绍
进化史:
1.2基本概念
(1)特征提取
神经生理学研究发现,人类等高等动物的视觉感知,首先对原始图像进行不同方向的滤波(卷积)。 注意,图像卷积时,根据定义,需要首先把卷积核上下左右转置。此处 卷积核(黄色)是对称的,所以忽视。
(2)填充
填充:就是在矩阵的边界上填充一些值,以增加矩阵的大小,通常用0 或者复制边界像素来进行填充,为了防止多次卷积后图像越变越小。
(3)步长
如果卷积核过大,步长就要相应增加,否则会造成卷积信息冗余。
(4)多通道卷积
如RGB,如图所示,卷积核为3*3*3大小,每个卷积核有27个参数
(5)池化(Pooling)
思想:使用局部统计特征,如均值或最大值,解决特征过多的问题。
(6)卷积神经网络结构
构成:由多个卷积层和下采样层构成,后面可连接全连接网络
卷积层:𝑘个滤波器
下采样层:采用mean或max
后面:连着全连接网络
1.3学习算法
1.4误差反向传播
卷积NN的BP算法:下采样层
卷积NN的BP算法:卷积层+卷积层
卷积NN的BP算法:卷积层+全连接层
2、LeNet-5网络
是现代神经网络的开创者
网络结构:
其中第二个卷积层的卷积核大小为5*5,通道数分别为:6个3通道、9个4通道、1个6通道
具体原理不过多介绍,在这里分享它的可视化网址:
3D Visualization of a Convolutional Neural Network
在这里你可以书写数字,网络会判断数字是几,也可以查看网络的内部数据。
下面是LeNet的代码:
import torch
from torch import nn
from d2l import torch as d2l
net = nn.Sequential(
nn.Conv2d(1, 6, kernel_size=5, padding=2), nn.Sigmoid(),
nn.AvgPool2d(kernel_size=2, stride=2),
nn.Conv2d(6, 16, kernel_size=5), nn.Sigmoid(),
nn.AvgPool2d(kernel_size=2, stride=2),
nn.Flatten(),
nn.Linear(16 * 5 * 5, 120), nn.Sigmoid(),
nn.Linear(120, 84), nn.Sigmoid(),
nn.Linear(84, 10))
X = torch.rand(size=(1, 1, 28, 28), dtype=torch.float32)
for layer in net:
X = layer(X)
print(layer.__class__.__name__,'output shape: \t',X.shape)
AI写代码
python
运行
具体的训练过程可以参考《动手学深度学习》电子书(zh.d2l.ai;含代码实践)
2317

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



