经典卷积神经网络的网络结构模型
LeNet-5模型

第一层:卷积层
输入原始图像像素,32321
过滤器5*5,深度6,不用全0填充,步长为1
输出长宽尺寸:32-5+1=28,即2828,深度为6,节点矩阵:2828*6=4704
卷积层参数:551*6+6=156
连接数:4704*(25+1)=122304 其中1是bias参数,每个卷积过滤器是5*5矩阵和1个bias
第二层:池化层
输入是上一层的输出,也就是28286
过滤器2*2,长宽步长都为2
输出矩阵:14146
第三层:卷积层
输入:14146
过滤器5*5,深度16,不用全0填充,步长为1
输出:[(14-5+1)^2] *16
具体来说,在标准卷积层设计中
连接:101016*(25+1)=41600
第四层:池化层
输入:101016
过滤器:2*2,步长2
输出:5516
第五层:全连接层(卷积层)
输入:5516
过滤器:5*5,深度120
输出:120个节点,也就是11120(卷积器矩阵跟输入矩阵相同,输出1*1的节点)
参数:5516*120+120=48120
第六层:全连接层
输入:120个节点
输出:84个节点
参数:120*84+84=10164
然后将其传递给sigmoid函数产生单元的一个状态
第七层:全连接层
这个笔记写的是Mnist,所以最后将84个节点又输入,输出10个节点
原文没有提到sigmoid
2.Inception-v3模型

采用不同尺寸的滤镜对图像进行处理后,并将处理后的矩阵依次连接起来形成一个整体数据集。随后全部采用零填充,并以步长1取样的采样策略确保所得的数据序列在时序维度上与原始数据保持一致。

用TensorFlow-Slim实现卷积层能减少代码量:
-用TensorFlow原始API:
with tf.variable_scope(scope_name):
weights=tf.get_variable("weight",...)
biases=tf.get_variable("bias",...)
conv=tf.nn.conv2d(...)
relu=tf.nn.relu(tf.nn.bias_add(conv,biases))
AI写代码
-用TensorFlow-Slim一行实现一个卷积层的前向传播算法
slim.conv2d具有三个必要参数:输入节点矩阵、卷积层的滤波器深度和滤波器尺寸。
可选参数:过滤器移动步长,是否全0填充,激活函数选择,变量命名空间等。
net=slim.conv2d(input,32,[3,3])
AI写代码

3.迁移学习
通过训练好的卷积神经网络模型,在另一个数据集上实现了高效的迁移。
保留卷积层的参数,替换最后一层全连接层,全连接层之前的称为瓶颈层。
基于新的数据集,在使用已训练好的神经网络模型的前提下,通过提取具有识别能力的特征,并将这些特征输入到一个新的全连接层中,在此过程中以训练新的分类模型为目标
