MNIST机器学习入门之MNIST数据集详细代码与注解

 

就好比编程入门有Hello World,机器学习入门有MNIST

在此之前我们需要下载好MNIST数据集

放入你的程序目录中

地址是http://yann.lecun.com/exdb/mnist/

 

MNIST机器学习入门之MNIST数据集详细代码与注解_第1张图片

就这四个然后就是代码了

代码如下:

import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets('MNIST_data/', one_hot=True)
#x不是一个特定的值,而是一个占位符placeholder,我们在TensorFlow运行计算时输入这个值。
# 我们希望能够输入任意数量的MNIST图像,每一张图展平成784维的向量。我们用2维的浮点数张量来表示这些图,
# 这个张量的形状是[None,784 ]
x = tf.placeholder("float",[None,784])
#tf.zeros([3, 4], tf.int32)  # [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
#可以看出,创建一个数组并初始化它们都为0
#W代表图片权重
w = tf.Variable(tf.zeros([784,10]))
b = tf.Variable(tf.zeros([10]))
#实现回归模型
y = tf.nn.softmax(tf.matmul(x,w)+b)
#实现训练模型

#初始化新占位符用于输入正确值
#插入张量的占位符,该张量将始终被馈送
y_ = tf.placeholder("float",[None,10])
#计算交叉熵
corss_entropy = -tf.reduce_sum(y_*tf.log(y))
#通过反向传播算法,来确定你的变量是如何影响你想要最小化的那个成本值
#用梯度下降算法以0.01的学习速率最小交叉熵。
train_step = tf.train.GradientDescentOptimizer(0.01).minimize(corss_entropy)
#初始化我们创建的变量,返回初始化全局变量的Op
init = tf.global_variables_initializer()
sess = tf.Session()
sess.run(init)
#开始训练模型
for i in range(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.1%左右

你可能感兴趣的:(tensorflow)