NiN
串联多个NiN块构成小网络来构成深层网络。
NiN块
NiN块是NiN的基础块。是由一个卷积层和两个充当全连接层的1x1卷积层串联形成。
NiN模型
使用卷积窗口形状分别为11×11、5×5和3×3的卷积层,每个NiN块后接一个步幅为2、窗口形状为3×3的最大池化层。
?疑点在d2l.FlattenLayer()函数的使用
GoogleNet
吸收了NiN的网络串联思想。
Inception块
块中有四条并行的线路,相当于一个子网络。
通过不同窗口形状的卷积层何最大池化层来并行抽取信息,并用1x1卷积层减少通道数从而降低模型复杂度。
GoogleNet模型
主体卷积部分使用五个模块block,每个模块间使用步幅为2的3x3最大池化层来减小输出高宽。
1th block=64通道的7x7卷积层
2th block=64通道的1x1卷积层+3x3卷积层~=Inception块中的第二条线路
3th block=2 Inception block
4th block=5 Inception block
5th block=2 Inception block
将多个设计的Inception块和其他层串联。
批量归一化
让较深的神经网络的训练更容易。输入数据比i奥准话,均值为0,标准差为1,标准化处理是输入数据各个特征的分布相近,更有效训练。
训练中模型参数的更新较容易造成深层神经网络输出层输出的剧烈变化,难以训练有效的深度模型。
批量归一化,利用小批量上的均值和标准差,不断调整神经网络在各层的中间输出,从而使神经网络的中间输出数值更稳定。
对全连接层和卷积层做批量归一化方法不同。
对全连接层的批量归一化
批量归一化层放置在全连接层的仿射变换和激活函数之间。
???
对卷积层做批量归一化
批量归一化层放置在卷积计算后,激活函数前。若卷积运算输出多个同发骚,则分别做批量归一化,各通道独立。
预测时的批量归一化
训练时批量设置大一点,能够使得批量的均值和方差计算准确;测试时平均移动整个训练数据集的均值和方差???
批量归一化层和对丢弃层一样,训练预测结果不同。
残差网络
神经网络模型添加新的层,充分训练后的模型更可能有效降低训练误差,但在过一定数量后往往不降反升。残差网络出现。
通过跨层数据通道从而训练有效的神经网络。
残差块
线路1:两个3x3卷积层,各后接一个批量归一化层和ReLU激活函数。
线路2:无模块
线路1和线路2合并,若需要改变通道数,则额外需引入一个1x1的卷积层,将输出连接到最后的ReLU激活函数。
ResNet模型
卷积层+批量归一化层+激活函数+池化层
(batch——size,channel,height,width)
变换?卷积、池化、1x1卷积、全连接层 对输出的影响?
ResNet由4个残差块组成,每个残差块使用若干(2)个同样输出通道数的残差块,最终加上全局平均池化层、全连接层输出。
增长率??
稠密连接网络
ResNet跨层连接设计,后续——稠密连接网络。
非跨层输出相加,而是在通道维连结。
DenseNet主要构建模块是稠密块和过渡层。前者定义输入和输出如何连结,后者控制通道数不过大。
稠密层
conv_block=批量归一化层+激活函数+卷积层;稠密块由多个conv_block组成,每个conv_block使用相同的输出通道数,输入通道数层层累加(in_channels:out_channels:in_channels+(num_convs-1)*out_channels)。稠密块的输出最大。
前向计算(forward)时,将各block的输入和输出在通道维上连结。
过渡层
稠密层=》通道数增加
过渡层=》控制模型复杂度;1x1卷积层减小通道数,平均池化层减半高和宽。
DenseNet模型
Part1:单卷积层+(批量归一化+激活函数)+单池化层
Part2:4个稠密块;稠密块间加入过渡层
Part3:(批量归一化+激活函数)+全局池化层+全连接层