TensorFlow实现LeNet-5的手写体识别,原理以及代码解释

tensorflow
tensor== zhangliang
line of 3d consist 4d
computation graph
for ease
session
run to flow(just run)
there are different frames
LeNet-5
a ease conv_net ,is a CNN for handwrite recognizing
INPUT 32X32
C1_layor
INPUT 32X32
conv kernel 5X5
the kinds of conv kernel 6
feature map 28x28
num of 神经元
parameters (5X5+1)X6每个滤波器5X5和一个bias参数 总共6个滤波器
S2 layor
INPUT 28X28
采样区域2X2
采样种类 6
输出的FMAP是14X14(28/2)
conv-pool-conv-pool-all connect
OUT PUT layor
也是全连接层,总共有十个神经元,分别代表0-9

do it:
1.import 库以及引入MINIST数据集
2.import tensorflow as tf//起别名
import numpy as np
from tensorflow.examples.tutorials.mnist import input_data//下载数据集到当前目录,并且新建文件夹MNIST_DATA
函数生成的类会自动将MNIST数据集划分成为train,validatuin test
mnist= input_data.read_data_sets("./MNIST_DATA",one_hot=True)
2.超参数设置,看博客ofliuyujun
3.结构
C1-cconv
S2-max_pool
C3-conv
S4-max_pool
layer5-full1//全连接层)
layer6-full2
C1-conv 32个5*5的卷积核"
“weight”,[5,5,1,32]//5X5,通道为1的32个卷积核
stddev=0.1//一个正态分布的条件
“bias”,[32]//32与上面相同
tf.nn.conv2d//nn代表神经网络
strides=[1,1,1,1]设置步长为1
padding="SAME"就是外衣和输入一样
relu1//激活函数
bias_add是相加
第一层输出是28X28X32 32是因为32个卷积核
28是因为padding设置为SAME所以输出和输入一样是28X28
100代表一批输入100张图片
100由超参数中 batch_size=100决定

第一层池化
ksize[1,2,2,1]2,2是为了让让图缩小一半,也就是区域2X2,kernel的大小
分成4个区域每个区域选一个最大值,组成新的图
1,1是默认的
做完后变成141432
“weight”,[5,5,32,64]32代表输入是32个,64是这层有64个卷积核
输出就是141464
第二次池化
输出是7764
shape即为那三个维度
nodes=shape1shape2shape3//nodes=3136
nodes是神经元个数
全连接层1
weight,[node,512]是因为3136全连接后连接到512个神经元
weight[512,10]、、代表512个神经元和10个神经元练连接

你可能感兴趣的:(人工智能)