用Tensorflow实现CNN手写数字识别

博主分享了使用Tensorflow构建CNN进行MNIST手写数字识别的实践过程,旨在巩固学习成果并可能帮助他人。文章重点在于CNN模型的实现。
摘要由CSDN通过智能技术生成

  这是自己的第一篇博客,写的不好请见谅,就是想把自己这段时间所学的相关tensorflow的相关东西做个总结,帮助自己记忆,也希望能对别人有点帮助。

  通过Tensorflow做的关于Mnist的数字识别,具体的完整流程请见极客网的流程。我只想记录一下自己的实现的CNN部分。


这一部分没什么要说的,导入Tensorflow

#coding=utf-8

import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
用于对变量赋初值,为了避免0梯度问题,我们在设置偏置值时使用不为0的小常数,这里取0.1。在tensorflow中的constant用于指定常量值,0.1是常数的具体取值,shape是数据格式。当value = 1,shape=[1,2]时,[1,1]为初值结果。truncated_normal决定了产生的数据的随机模型
def weight_variable(shape):
    initial = tf.truncated_normal(shape,stddev=0.1)
    return tf.Variable(initial)
def bias_variable(shape):
    initial = tf.constant(0.1,shape=shape)
    # 0.1是常数的值,shape是数据格式
    return tf.Variable(initial)

  接下来是需要重点理解的部分,也是CNN的区别的地方,conv2d 和 pool。
卷积的本质是对原图片通过卷积层提取特征,我们不再需要对所有神经元关联而是仅对附近的神经元局部计算 (例如我们可以取一个5x5的块来提取),并且参数共享,这样就极大地简化了计算。我的代码中将strides定为1,表示位移的步长为1。
  con2d有几个参数值,先说input是实际输入值
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值