像AlexNet、VGG这种网络,都是串行结构。将一系列卷积层和池化下采样层进行串联。
左边:inception结构初始版本:
在上一层输出之后,将所得到的特征矩阵同时输入四个分支当中进行处理。
将所得到的四个分支的特征矩阵按照深度进行拼接,得到输出特征矩阵。
第一个分支:卷积核大小为1x1的卷积核
第二个分支:……3x3……
第三个分支:……5x5……
第四个分支:池化核为3x3的最大池化下采样
每个分支得到不同尺度的特征矩阵,矩阵高维度、宽维度相同,否则无法沿深度方向拼接。
右边:inception加上一个降维的结构:
多了三个1x1的卷积层,均起到降维的作用。
减少特征矩阵的深度–>减少卷积参数–>减少计算量
降维:
深度512
特征矩阵的深度由卷积核的个数决定的
辅助分类器
两个辅助分类器的结构一模一样
S和V表示卷积、池化的步距
(辅助分类器:避免梯度消失、模型融合、正则化)
在训练过程中用到的,在预测过程中删除掉的
参数对比
pytorch搭建
模板1 卷积
模板2 inception结构
模板3 辅助分类器
googlenet
①结构
②正向传播
训练train
与之前的AlexNet、VGG基本上一样
有两点不同:
1、定义模型部分
2、损失函数
在之前的网络中只有一个输出,到那时在googlenet网络中有三个输出(两个辅助分类器)。
预测
载入模型
训练过程漫长,不演示了。