下面代码使用Softmax分类MNIST,并绘制准确率随训练次数变化的关系图:
(代码会自动下载MNIST数据集放在"MNIST_data/"文件夹中,若数据及存在则直接使用)
# coding:utf-8
import matplotlib.pyplot as plt
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data # 导入MNIST教学的模块
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True) # 读入MNIST数据
x = tf.placeholder(tf.float32, [None, 784]) # 创建x,x是一个占位符(placeholder),代表待识别的图片
y_ = tf.placeholder(tf.float32, [None, 10]) # y_是实际的图像标签,同样以占位符表示。
W = tf.Variable(tf.ones([784, 10])) # 在TensorFlow中,变量的参数用tf.Variable表示
b = tf.Variable(tf.zeros([10])) # b是又一个Softmax模型的参数,我们一般叫做“偏置项”(bias)。
y = tf.nn.softmax(tf.matmul(x, W) + b) # y=softmax(Wx + b),y表示模型的输出
cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y))) # 根据y, y_构造交叉熵损失
train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy) # 有了损失,我们就可以用随机梯度下降针对模型的参数(W和b)进行优化
n = 500 # 训练次数
s = 10 # 准确率输出间隔
accuracy_list = [] #