Tensorflow学习之minist

本文完全基于tensorflow中文社区,作为自己机器学习和tensorflow学习的入门。

初始准备:

下载tensorflow官方社区要求的minst数据集,很简单,只有四个,解压之后放入文件夹。

import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
import matplotlib.pyplot as plt
# MNIST_data 代表当前程序文件所在的目录中,用于存放MNIST数据的文件夹,如果没有则新建,然后下载.
mnist = input_data.read_data_sets(r"C:\Users\admin\Desktop\MNIST_data",one_hot=True)
#获取第二张图片
x = tf.placeholder("float", [None, 784])
W = tf.Variable(tf.zeros([784,10]))
b = tf.Variable(tf.zeros([10]))
y = tf.nn.softmax(tf.matmul(x,W) + b)
#个人理解,softmax是为了加大预测指标结果和其他错误结果的差距,使对的更对,错的更错
y_ = tf.placeholder("float", [None,10])
cross_entropy = -tf.reduce_sum(y_*tf.log(y))  #这是损失函数
train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)
#这是学习过程,0.01是学习速率,利用梯度下降算法和反向传播算法不断最小化损失函数。
#作为一个入门小白,看到这里可能也才大概明白为什么我们要使用tensorflow,因为它直接提供给我们调用的接口,
#可以直接实现梯度下降算法和反向传播过程。
#@@以上是我们对自己模型的设置,下面是我们启动这个模型
init = tf.global_variables_initializer()
#这一步是初始化我们的变量

sess = tf.Session() #开始启动我们的模型。
sess.run(init)
for i in range(1000):  #一共循环1000次,每次抓取100个数据喂食我们的模型
  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}))
#运行并得出结果

小白新手作解释,大家如果发现错误一定要提醒改正鸭

你可能感兴趣的:(Data_Science)