Deep Learning-TensorFlow (1) CNN卷积神经网络_MNIST手写数字识别代码实现

本文介绍了如何在TensorFlow中构建一个深度卷积神经网络模型,用于MNIST手写数字识别。文章涵盖了从环境配置到模型构建的全过程,包括数据加载、会话运行、Softmax回归模型、占位符、变量、卷积与池化、全连接层、dropout以及训练与评估模型等关键步骤。
摘要由CSDN通过智能技术生成

环境:Win8.1 TensorFlow1.0.0

软件:Anaconda3 (集成Python3及开发环境)

TensorFlow安装:pip install tensorflow (CPU版) pip install tensorflow-gpu (GPU版)


TensorFlow是一个非常强大的用来做大规模数值计算的库。其所擅长的任务之一就是实现以及训练深度神经网络。

在博文中,将构建一个TensorFlow模型的基本步骤,并将通过这些步骤为MNIST构建一个深度卷积神经网络。


加载MNIST数据

为了方便起见,准备一个脚本来自动下载和导入MNIST数据集。它会自动创建一个'MNIST_data'的目录来存储数据。

import tensorflow.examples.tutorials.mnist.input_data as input_data
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)


运行TensorFlow的Session

Tensorflow依赖于一个高效的C++后端来进行计算。与后端的这个连接叫做session。一般而言,使用TensorFlow程序的流程是先创建一个图,然后在session中启动它。

import tensorflow as tf
sess = tf.Session()
sess.run(tf.global_variables_initializer())


构建Softmax 回归模型

建立一个拥有一个线性层的softmax回归模型。


占位符

通过为输入图像和目标输出类别创建节点,来开始构建计算图。

这里的x和y并不是特定的值,相反,他们都只是一个占位符,可以在TensorFlow运行某一计算时根据该占位符输入具体的值。
输入图片x是一个2维的浮点数张量。这里,分配给它的shape为[None, 784],其中784是一张展平的MNIST图片的维度。None表示其值大小不定,在这里作为第一个维度值,用以指代batch的大小,意即x的数量不定。输出类别值y_也是一个2维张量,其中每一行为一个10维的one-hot向量,用于代表对应某一MNIST图片的类别。
虽然placeholder的shape参数是可选的,但有了它,TensorFlow能够自动捕捉因数据维度不一致导致的错误。

x = tf.placeholder(tf.float32, [None, 784]) 
y_ = tf.placeholder(tf.float32, [None,10])


变量

现在为模型定义权重W和偏置b。可以将它们当作额外的输入量

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值