一.GoogLeNet
1. 其中的多次出现的蓝红结构被称之为:Inception
1.1 什么是1 * 1的单个卷积核?
对于1 * 1的卷积核,层数不同仅代表不同值的单个像素,与对应图像做数乘运算要求和,化作一层的输出。而这n个卷积组成的不同卷积核的数量,决定输出的层数
1.2 1 * 1的卷积核作用
对于相同的图像经过卷积层操作,得到同样大小,层数的输出,如果在其中加入1 * 1卷积核的运算,则可以大大降低运算量,因此1 * 1的卷积核也叫神经网络里的网络
当然,补充一点,要使前后卷积操作的图像大小不变,padding的圈数等于卷积核的大小对2取模运算即可
1.3 Inception层的代码构成
最终各层生成的图像,要沿着Chanel层进行连接(Concatenate),而四维张量的维度 :1.Batch 2.Chanel 3.Witch 4. Height,按第一层维度进行cat
最终合成的代码
outputs = [branch1x1, branch5x5, branch3x3, branch_pool]
return torch.cat(output, dim = 1)
1.4 卷积层既然扩展了维度,那是否越多层数的叠加,会带来更好的效果?
答案明显是否定的,在梯度下降法里面,我们反向传播的导数势必是小于1的,在不断拓展层数的同时,使得小于1的梯度不断出现,导致我们最终的导数之积非常小,这就是所谓的——梯度消失。那么如何解决这一个问题?这就引出了Residual net的网络,跳连接。
这个跳连接增加的单纯的x,在计算导数的时候会等于1,而使得接近于0的梯度出现时,整体的值趋向于1,而不是0,导致梯度累积不会出现梯度消失现象。但这种运算需要通道,宽度,高度完全一样的情况才可以做出这种运算。
1.5 基本构成的代码
为了做到输入输出的图像层数一样,直接将初始图像通道数,在卷积运算的函数填充,保证Residual Block层和卷积层的输入输出一致。