传统神经网络权值太多,计算量太大,需要大量样本进行训练,根据经验,一般来说样本的数量最好是权值数量的 5 - 30 倍,如 有1万个权值,最好有5万-10万个样本来训练
局部感受野
他们发现了每一个视觉神经元只会处理一小块区域的视觉图像,即感受野(Receptive Field)。卷积神经网络的概念即出自于此。
卷积神经网络CNN
第一个卷积特征由黄色区域计算:1*1+1*0+1*1+0*0+1*1+1*0+0*1+0*0+1*1=4
多个卷积核
经过不同的卷积核得到不同的特征图,所以我们可以认为不同的卷积核可以对不同的特征进行采样,不同的特征对图片的分类有很大的作用,单一的特征可能会影响分类的效果
对卷积的操作
SAME PADDING 和 VALID PADDING
参考:TensorFlow中CNN的两种padding方式“SAME”和“VALID”
卷积后一般会加上池化层进行池化操作
池化
对于池化的操作
处理过程
手写数字识别使使用卷积神经网络案例
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets('MNIST_data', one_hot=True)
batch_size = 100
n_batch = mnist.train.num_examples // batch_size
# 初始化权值
def weight_variables(shape):
initial = tf.truncated_normal(shape, stddev=0.1) # 截断正太分布
return tf.Variable(initial)
# 初始化偏置
def biases_variables(shape):
initial = tf.