Tensorflow实现一个完整的卷积神经网络


(一)卷积神经网络结构+最终的识别精度。

用Tensorflow实现一个完整的卷积神经网络,用这个卷积神经网络来识别手写数字数据集(MNIST)。我们先来看看实现的卷积神经网络结构如下图所示:


接着,我们再来看看实现的这个卷积神经网络,在MNIST数据集中的测试集上的精度。

我用了两种优化训练方法,对模型训练了1000次,在训练1000的过程中,每隔50次进行一次模型的精度测试。

(1)批量梯度下降法(Batch Gradient Descent),结果如下图所示。学习率为0.001。

图1:学习率为0.001的批量梯度下降结果                         图2:学习率为1e-4的批量梯度下降结果

(2)Adam优化训练方法。结果如下图所示。(学习率为:1e-4也就是1*10^(-4))。


分析两种优化方法的结果:

Adam优化算法比批量梯度下降法更快的到达最优解,使学习器更快的达到最优效果。

(二)实现网络结构
(1)定义卷积层的Weight和bias。

1. 导入Tensorflow模块。

import tensorflow as tf

2. 采用的数据集是Tensorflow里面的mnist数据集。我们需要把数据集导入:

from tensorflow.examples.tutorials.mnist import input_data
# number 1 to 10 data
mnist = input_data.read_data_sets("MNIST_data",one_hot=True)

3. 定义Weight变量,输入shape,返回变量的参数。其中我们使用了tf.truncted_normal产生随机变量来进行初始化:

def weight_variable(shape):
    initial = tf.truncated_normal(shape, stddev=0.1)
    return tf.Variable(initial)

定义biase变量,输入shape,返回变量的一些参数。其中我们使用tf.constant常量函数来进行初始化:

def bias_variable(shape):
    initial = tf.constant(0.1, shape=shape)
    return tf.Variable(initial)

4. 定义卷积操作。tf.nn.conv2d函数是Tensorflow里面的二维的卷积函数,x是图片的所有参数,W是卷积层的权重,然后定义步长strides=[1,1,1,1]值。strides[0]和strides[3]的两个1是默认值,意思是不对样本个数和channel进行卷积,中间两个1代表padding是在x方向运动一步,y方向运动一步&#x

  • 50
    点赞
  • 340
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值