卷积神经网络和全连接神经网络的唯一区别是神经网络中相邻两层的连接方式。
但在TensorFlow中训练一个卷积神经网络的流程和训练一个全连接神经网络没有任何区别。
全连接神经网络来处理图像数据会出现参数增多导致速度变慢以及过拟合问题。
一、卷积神经网络结构
由输入层、卷积层、池化层、全连接层、softmax层
1、卷积层
过滤器:将当前层神经网络上的一个子节点矩阵转化为下一层神经网络上的一个单位节点矩阵。
规定过滤器的尺寸为输入节点矩阵的大小,过滤器的深度为输出单位节点矩阵的深度。
过滤器的前向传播过程就是通过左侧小矩阵中的节点计算出右侧单位矩阵中节点的过程。
在CNN中,每一个卷积层中使用的过滤器中的参数都是一样的。
卷积层的参数个数只和过滤器的尺寸、深度以及当前层节点矩阵的深度有关。
一般卷积层通常采用补0或者改变步长来不改变节点矩阵大小。
#卷积层的前向传播过程
import tensorflow as tf
filter_weight = tf.get_variable('weights', [5, 5, 3, 16], initializer=tf.truncated_normal_initializer(stddev=0.1))
biases = tf.get_variable('biases', [16], initializer=tf.constant_initializer(0.1))
#卷积神经网络的前向推导,添加偏置项,采用relu激活函数去线性化
#strides控制步长,padding控制填充方式
conv = tf.nn.conv2d(input, filter_weight, strides=[1, 1, 1, 1], padding="SAME")
bias = tf.nn.bias_add(conv, biases)
actived_conv = tf.nn.relu(bias)
2、池化层
作