卷积神经网络学习笔记

寒假只看了一位UP主的视频
链接

结构

CNN结构:卷积层、激活函数、池化层(下采样层)、全连接层、输出层等。
借鉴一位博主一文精简介绍CNN基本结构
经卷积后矩阵大小计算公式:N=(W-F+2P)/S+1
W:输入图像大小
F:指Fliter大小或卷积核大小Kernel_Size
S(stride):卷积步长,也就是每次卷积核(滑动窗口)移动的步长
P(padding):Padding填充
卷积深度:卷积核个数
池化层:池化层只改变特征矩阵大小,不改变特征矩阵深度(通道数)。一般poolsize(池化核大小)和stride(池化步长)相同,因为选用不重叠的池化。

经典CNN模型

LeNet-5


在这里插入图片描述
在这里插入图片描述

LeNet-5不包含输入层一共有7层
输入层:输入是一张32*32黑白图片,意味着输入通道数1(若是彩色图片则输入通道数为3)

  • C1层(卷积层):采用6个5×5的卷积核对输入进行卷积,得到6个大小为28×28 不同的输出特征图 W=32,F=5,S=1     28 = ( 32 − 5 ) / 1 + 1 28=(32-5)/1+1 28=325/1+1。神经元个数:6×28×28
  • S2层(池化层):池化核(池化窗口)大小2×2,步长2,输入28,输出14(输出=输入/步长)神经元个数6×14×14
  • C3层(卷积层):用16个5×5的卷积核进行卷积 ,W=14,F=5,S=1,16个特征图大小均为 10 = 14 − 5 + 1 10=14-5+1 10=145+1。(这一层16个卷积核中只有10个和前面的6层相连接。也就是说,这16个卷积核并不是扫描前一层所有的6个通道。)
  • S4层(池化层):池化核2×2,步长2,输入特征图大小10,输出特征图大小5。   5=10/2。神经元个数16×5×5
  • C5层(卷积层):用120个16×5×5的卷积核组进行卷积,W=5 F=5 S=120个特征图大小均为
    1 × 1 × ( 5 − 5 + 1 ) = 1 1×1×(5-5+1)=1 1×1×(55+1)=1。神经元个数为120(这里实际上是全连接,但是原文还是称之为了卷积层)
  • F6层(全连接层):有84个节点,该层的训练参数和连接数都( 120 + 1 ) × 84 = 10164
  • F7层(输出层):输出层,输出单元是10个,因为数字识别是0-9
    C3、C5和C6层好复杂,整不明白
    参考LeNet模型详解以及代码实现
    若使用整个样本进行求解,损失梯度指向全局最优方向

优化器:实际应用中不可能一次将所有算力载入内存,是分批次训练的。若使用分批次样本进行求解,损失梯度指向当前批次最优方向,优化器是使网络更快收敛。
在这里插入图片描述
关于学习率、梯度下降、优化器的概念看这个博客
链接: 深度学习中常见概念(收敛、优化器、学习率等)
PyTorch中在反向传播前为什么要手动将梯度清零?

AlexNet

dropout:防止过拟合,在训练过程中,按照一定的概率随机将部分神经网络单元从网络中丢弃,由于随机丢弃,每一个mini-batch就在训练不同的网络,防止过拟合也增强了泛化能力

ResNet

BN:将训练数据和测试数据归一化,可以增强网络的泛化能力,同时提高网络的训练速度。
深度学习网络随着网络加深,训练越困难,收敛也越来越慢,很多方法解决这个问题,比如ReLU激活函数,比如残差神经网络,BN本质上也是从不同角度来解决这个问题的。
BN也实际上是在做feature scaling,将输入数据分布变换到0均值,单位方差的正态分布,神经网络能够较快收敛

resnet18

ResNet18网络的具体构成
https://blog.csdn.net/benzhujie1245com/article/details/117173090

Seq2Seq模型

Seq2Seq模型是输出的长度不确定时采用的模型,这种情况一般是在机器翻译的任务中出现,将一句中文翻译成英文,那么这句英文的长度有可能会比中文短,也有可能会比中文长,所以输出的长度就不确定了。
Seq2Seq其实就是Encoder-Decoder结构的网络,它的输入是一个序列,输出也是一个序列。在Encoder中,将序列转换成一个固定长度的向量,然后通过Decoder将该向量转换成我们想要的序列输出出来
Encoder是一个RNN,也可以是LSTM、GRU等,接收的是每一个单词的词向量,和上一个时间点的隐藏状态。输出的是这个时间点的隐藏状态。其中激活函数可以是sigmoid、tanh、Relu、softmax等
Decoder是个RNN,也可以是LSTM、GRU等,将encoder得到的语义向量作为初始状态输入到Decoder的RNN中,得到输出序列。可以看到上一时刻的输出会作为当前时刻的输入,而且其中语义向量只作为初始状态参与运算,后面的运算都与语义向量无关
在这里插入图片描述

Attention机制就是让编码器编码出来的向量根据解码器要解码的东西动态变化的一种机制,貌似来源灵感就是人类视觉在看某一个东西的时候会有选择的针对重要的地方看
参考
Seq2Seq模型介绍
Seq2Seq原理详解

Transformer

Transformer 模型详解
在这里插入图片描述
图中左边部分为Encoder 部分,右边部分为Decoder部分和最后的线性输出层。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值