TensorFlow学习 Mnist示例程序完整代码+注释解析

以下是通过阅读官方文档整理的Mnist示例程序,更详细的代码解释参见官网:
官方英文:http://www.tensorflow.org/
中文翻译:http://wiki.jikexueyuan.com/project/tensorflow-zh/

目录结构:

将MNIST数据放在当前文件夹下,文件夹名命名为MNIST_data
TensorFlow学习 Mnist示例程序完整代码+注释解析_第1张图片

test.py:

from tensorflow.examples.tutorials.mnist import input_data
import tensorflow as tf


mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)

# 定义一个占位符x
x = tf.placeholder(tf.float32, [None, 784])  # 张量的形状是[None, 784],None表第一个维度任意

# 定义变量W,b,是可以被修改的张量,用来存放机器学习模型参数
W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))

# 实现模型, y是预测分布
y = tf.nn.softmax(tf.matmul(x, W) + b)

# 训练模型,y_是实际分布
y_ = tf.placeholder("float", [None, 10])
cross_entropy = -tf.reduce_sum(y_ * tf.log(y))  # 交叉嫡,cost function

# 使用梯度下降来降低cost,学习速率为0.01
train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)

# 初始化已经创建的变量
init = tf.global_variables_initializer()

# 在一个Session中启动模型,并初始化变量
sess = tf.Session()
sess.run(init)

# 训练模型,运行1000次,每次随机抽取100个
for i in range(1, 1000):
    batch_xs, batch_ys = mnist.train.next_batch(100)
    sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})

# 验证正确率
correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, 'float'))
print(sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels}))

运行结果:

准确率约为91.72%
TensorFlow学习 Mnist示例程序完整代码+注释解析_第2张图片

你可能感兴趣的:(Machine,Learning)