TensorFlow笔记——关于MNIST数据的一个简单的例子
来源:互联网 发布:深圳蓝思网络 编辑:程序博客网 时间:2024/06/05 12:06
这个程序参考自极客学院。
from tensorflow.examples.tutorials.mnist import input_dataimport tensorflow as tf# MNIST数据存放的路径file = "./MNIST"# 导入数据mnist = input_data.read_data_sets(file, one_hot=True)# 模型的输入和输出x = tf.placeholder(tf.float32, shape=[None, 784])y_ = tf.placeholder(tf.float32, shape=[None, 10])# 模型的权重和偏移量W = tf.Variable(tf.zeros([784, 10]))b = tf.Variable(tf.zeros([10]))# 创建Sessionsess = tf.InteractiveSession()# 初始化权重变量sess.run(tf.global_variables_initializer())y = tf.nn.softmax(tf.matmul(x, W) + b)# 交叉熵cross_entropy = -tf.reduce_sum(y_*tf.log(y))# 训练train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)for i in range(1000): batch = mnist.train.next_batch(50) train_step.run(feed_dict={x: batch[0], y_: batch[1]})# 测试correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))print(sess.run(accuracy, feed_dict={x: mnist.test.images, y_:mnist.test.labels}))
注释:
# MNIST数据存放的路径file = "./MNIST"# 导入数据mnist = input_data.read_data_sets(file, one_hot=True)
将下载MNIST数据到./MNIST/文件夹下,此过程可能会由于网络问题而出错。建议自己从MNIST官网下载。将下载好的文件放到上述路径下即可。input_data.read_data_sets()函数可以自动检测指定目录下是否存在MNIST数据,如果存在,就不会下载了。
# 模型的输入和输出x = tf.placeholder(tf.float32, shape=[None, 784])y_ = tf.placeholder(tf.float32, shape=[None, 10])
这里x和y不是特定的值。它们是表示输入和输出的占位符,可以在进行计算的时候进行赋值。
模型的输入x是一个
# 模型的权重和偏移量W = tf.Variable(tf.zeros([784, 10]))b = tf.Variable(tf.zeros([10]))
变量W和b是线性模型的参数,这个线性模型用如下表达式表示:
其中,
# 创建Sessionsess = tf.InteractiveSession()# 初始化权重变量# 以前版本的初始化代码是# sess.run(tf.initialize_all_variables())sess.run(tf.global_variables_initializer())
变量需要经过初始化才可以在Session中使用。
# 构建回归模型y = tf.nn.softmax(tf.matmul(x, W) + b)
把向量化后的图片x和权重矩阵W相乘,加上偏移量b,然后计算每个分类的softmax概率值。
# 交叉熵cross_entropy = -tf.reduce_sum(y_*tf.log(y))
为训练过程指定损失函数,损失函数是用来评估模型一次预测的好与坏的。在这里使用目标类别和预测类别之间的交叉熵作为我们的损失函数。交叉熵定义如下:
其中
# 训练train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)for i in range(1000): batch = mnist.train.next_batch(50) train_step.run(feed_dict={x: batch[0], y_: batch[1]})
这里我们使用TensorFlow内置的梯度下降来进行优化,即让损失函数的值下降,步长为
# 测试# 这里返回一个布尔数组,形如[True, False, True]correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))# 将布尔数组转换为浮点数,并取平均值,如上布尔数组可以转换为[1, 0, 1],计算平均值为0.667accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))# 计算在测试数据上的准确率print(sess.run(accuracy, feed_dict={x: mnist.test.images, y_:mnist.test.labels}))
模型到这里就构建完成了,但这个模型到底好不好,我们并不知道。所以需要在测试集上验证模型的泛化能力。
最后,这个模型的准确率约为
- TensorFlow笔记——关于MNIST数据的一个简单的例子
- 简单的Tensorflow(6):MNIST数据集的简单应用
- TensorFlow官方教程学习笔记(四)——MNIST数据集的读取
- TensorFlow的MNIST数据识别
- tensorflow MNIST数据集上简单的MLP网络
- TensorFlow的softmax regression做mnist例子
- TensorFlow的cnn做mnist例子
- [06]tensorflow源码例子mnist源码——mnist.py
- tensorflow源码例子mnist源码——mnist.py
- tensorflow笔记1——自动下载和安装 MNIST 到 TensorFlow 的 python 源码
- Tensorflow-简单的例子
- tensorflow 简单的例子
- TensorFlow中关于MNIST的学习
- 深度学习笔记——TensorFlow学习笔记(三)使用TensorFlow实现的神经网络进行MNIST手写体数字识别
- tensorflow实现softmax回归(softmax regression)——简单的MNIST识别(第一课)
- TensorFlow学习笔记(2)--运行MNIST例子
- TensorFlow系列(3)——基于MNIST数据集的RNN实现
- TensorFlow系列(4)——基于MNIST数据集的CNN实现
- jQuery新增标签之后添加监听
- psql:connection refused和No route to host
- 机器学习实战笔记-利用PCA来简化数据
- Android知识点总结
- 轮播图
- TensorFlow笔记——关于MNIST数据的一个简单的例子
- mt2503 [Input Method]FTE工程中,编辑界面默认起始的虚拟键盘要为qwerty
- Web 前端知识体系精简
- 回归分析——学习资料(更新..........)
- iCare Data Recovery Pro(数据恢复软件)官方破解版V8.0.5.0下载 | icare data recovery 注册码
- deepmind_lab msys2就是在windows上面的linux
- LeetCode基础--位运算(in progress)
- ZAB与Paxos算法的联系与区别。
- Qt中用同一个变量的QString::setNum()来设置数字存在的不确定性问题分析