刘二大人PyTorch-卷积神经网络(CNN)—高级篇

《PyTorch深度学习实践》视频

一.GoogLeNet

刘二大人PyTorch-卷积神经网络(CNN)—高级篇_第1张图片

1. 其中的多次出现的蓝红结构被称之为:Inception 

刘二大人PyTorch-卷积神经网络(CNN)—高级篇_第2张图片

 1.1 什么是1 * 1的单个卷积核?

对于1 * 1的卷积核,层数不同仅代表不同值的单个像素,与对应图像做数乘运算要求和,化作一层的输出。而这n个卷积组成的不同卷积核的数量,决定输出的层数刘二大人PyTorch-卷积神经网络(CNN)—高级篇_第3张图片

 1.2 1 * 1的卷积核作用

对于相同的图像经过卷积层操作,得到同样大小,层数的输出,如果在其中加入1 * 1卷积核的运算,则可以大大降低运算量,因此1 *  1的卷积核也叫神经网络里的网络

刘二大人PyTorch-卷积神经网络(CNN)—高级篇_第4张图片

 当然,补充一点,要使前后卷积操作的图像大小不变,padding的圈数等于卷积核的大小对2取模运算即可

 1.3 Inception层的代码构成

刘二大人PyTorch-卷积神经网络(CNN)—高级篇_第5张图片

 最终各层生成的图像,要沿着Chanel层进行连接(Concatenate),而四维张量的维度 :1.Batch 2.Chanel 3.Witch 4. Height,按第一层维度进行cat

刘二大人PyTorch-卷积神经网络(CNN)—高级篇_第6张图片

 最终合成的代码

outputs = [branch1x1, branch5x5, branch3x3, branch_pool]
return torch.cat(output, dim = 1)

刘二大人PyTorch-卷积神经网络(CNN)—高级篇_第7张图片

 1.4 卷积层既然扩展了维度,那是否越多层数的叠加,会带来更好的效果?

刘二大人PyTorch-卷积神经网络(CNN)—高级篇_第8张图片

 答案明显是否定的,在梯度下降法里面,我们反向传播的导数势必是小于1的,在不断拓展层数的同时,使得小于1的梯度不断出现,导致我们最终的导数之积非常小,这就是所谓的——梯度消失。那么如何解决这一个问题?这就引出了Residual net的网络,跳连接。

刘二大人PyTorch-卷积神经网络(CNN)—高级篇_第9张图片

 这个跳连接增加的单纯的x,在计算导数的时候会等于1,而使得接近于0的梯度出现时,整体的值趋向于1,而不是0,导致梯度累积不会出现梯度消失现象。但这种运算需要通道,宽度,高度完全一样的情况才可以做出这种运算。

 1.5 基本构成的代码

为了做到输入输出的图像层数一样,直接将初始图像通道数,在卷积运算的函数填充,保证Residual Block层和卷积层的输入输出一致。刘二大人PyTorch-卷积神经网络(CNN)—高级篇_第10张图片

 

你可能感兴趣的:(pytorch,cnn,深度学习)