待学习区:
1、先提一嘴,还有个正则化的没学。(减少过拟合)
2、还一个 CNN反向传播没学。
代码基于keras库
LeNet-5
1、网络结构
400是5*5*16个参数,经过两层全连接层Fully connected layer最后到0-9这十个神经元输出。
450+6是5×5×3×6个+6个偏置,一个卷积核一个偏置。
48000+120就是用120个神经元处理400个特征,120×400+120个偏置。
AlexNet
卷积网络结构的优化:
VGG
Inception结构
MLP卷积(1×1卷积)
目的是设计一种具有优良局部拓扑结构的网络,即对输入图像并行地执行多个卷积运算或池化操作,并将所有输出结果拼接为一个非常深的特征图。因为 1*1、3*3 或 5*5 等不同的卷积运算与池化操作可以获得输入图像的不同信息,并行处理这些运算并结合所有结果将获得更好的图像表征。
GoogleNet结构
辅助函数让整个网络不会太深,计算不会直接从头到尾,而是在中间就会计算损失函数。
depthconcat即concatenate()
这个拼接就是为了有更深的特征图。
什么是批标准化 (Batch Normalization) - 知乎 (zhihu.com)
这个BN就是batch normalization批标准化,将分散的数据统一,能让机器学习更容易学习到数据之中的规律。输入层中标准化很有效,而隐藏层同样可以解决不敏感问题(tanh在激活值在接近1后就不敏感了,此时是因为x过大,标准化后就不至于那么快到)。而BN要加在每一个全连接和激励函数之间
但BN算法还一个反标准化工序
为了让神经网络自己去学着使用和修改这个扩展参数 gamma, 和 平移参数 β, 这样神经网络就能自己慢慢琢磨出前面的 normalization 操作到底有没有起到优化的作用, 如果没有起到作用, 我就使用 gamma 和 belt 来抵消一些 normalization 的操作.
dense是全连接层
代码复现的问题:
1、VGG代码:前面说了是基于keras库,所以这里的应该是keras.Sequential(),还有Conv2D()函数的用法:
(2条消息) keras conv2d 解析_专治跌倒扭伤的博客-CSDN博客_conv2d keras
def conv2d_test():
#为了更直观看出结果,这里kernel_initializer 设为oens使核参数都为1.
model = Sequential()
model.add(layers.Conv2D(filters = 3, kernel_size=(2,2) , input_shape = (4, 4, 1), strides = 1, kernel_initializer = 'ones'))
return model
_______________________________________________________
接下来继续学习inception其他版本:
(2条消息) inception-v1,v2,v3,v4----论文笔记_ Meng的博客-CSDN博客_inception v2
Inception-v2
核心思想:Batch Normalization
Inception-v3
1、提出神经网络结构的设计和优化思路
2、改进inception
这里可能有一点错误:第2点
Inception-v4
思想:inception表现很好,很火的ResNet表现也很好,那就想办法把他们结合起来。
Inception-ResNet v1
Inception-ResNet v2
作者总结的几个点:
ResNet-里程碑式创新
2015年何恺明推出的ResNet
残差网络-Residual network:
residual block
原理数学公式解释:
梯度消失即等式左边为0
浅的l层会受到后面的影响。
完整结构:
ResNet比起VGG19这样的网络深很多,但是运算量是少于VGG19等的。
代码实现:
DenseNet-密集连接卷积网络
卷积神经网络可视化