MNIST数据集输出识别准确率

MINST数据集:

提供6w张28*28像素点的0~9手写数字图片和标签,用于训练;

提供1w张28*28像素点的0~9手写数字图片和标签,用于测试。

每张图片的784个像素点(28*28=784)组成长度为784的一维数组,作为输入特征

eg:[0. 0. 0. 0. 0. 0. 0.380 0.376 0.301 0.462 … … … 0.239 0. 0. 0. 0. 0. 0. 0. 0.]

图片的标签以一维数组形式给出,每个元素表示对应分类出现的概率。

eg:[0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]这个表示数字6的概率是100%其他数字的概率均是0,意思就是图片应该是阿拉伯数字6。

from tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets('./data/', one_hot=True) 

Train and Validation:→训练和验证模型参数

  • train-images-idx3-ubyte.gz
  • train-labels-idx1-ubyte.gz

Test:→测试模型

  • t10k-images-idx3-ubyte.gz
  • t10k-labels-idx1-ubyte.gz

返回各子集样本数:

mnist.train.num_examples mnist.validation.num_examples mnist.test.num_examples 

返回标签和数据:

>>>mnist.train.labels[0] # 表示第0张图片的标签 array([0., 0., 0., 0., 0., 0., 0., 1., 0., 0.]) >>>mnist.train.images[0] # 表示第0张图片的784个像素点 array([0. , 0. ,0. 0. , 0. ,0. 0. , 0. ,0. 0. , 0. ,0. .................................. ]) # 总共784个像素点 

收一小撮数据,准备喂入神经网络训练:

>>>BATCH_SIZE = 200 # 定义一小撮是多少 >>>xs, ys = mnist.train.next_batch(BATCH_SIZE) # 从训练集中随机抽取BATCH_SIZE组个数据和标签 >>>print("xs shape:", xs.shape) xs.shape: (200,784) # 200行数据 每个数据有784个像素点 >>>print("ys shape:", ys.shape) ys shape: (200,10) # 200行数据 每个数据有10个元素是输出的分类 

下面是一些常用的函数:

tf.get_collection("") # 从集合中取全部变量,生成一个列表 tf.add_n([]) # 列表内对应元素相加 tf.cast(x,dtype) # 把x转为dtype类型 tf.argmax(x,axis) # 返回最大值所在的索引号,如:tf.argmax([1,0,0],1) 返回0 os.path.join("home", "name") # 返回home/name 字符串.spilt() # 按指定字符串对字符串进行切片,返回分割后的列表 with tf.Graph().as_default() as g: # 其内定义的节点在计算图g 

保存模型:

saver = tf.train.Saver() # 实例化saver对象 with tf.Session as sess: for i in range(STEPS): if i % 轮数 == 0: saver.save(sess, os.path.join(MODEL_SAVE_PATH,MODEL_NAME), global_step=global_step) 

加载模型:

with tf.Session() as sess: ckpt = tf.train.get_checkpoint_state(存储路径) if ckpt and ckpt.model_checkpoint_path: saver.restore(sess, ckpt.model_checkpoint_path) 

实例化可还原滑动平均值的saver

ema = tf.train.ExponentialMovingAverage(滑动平均基数) ema_restore = ema.variables_to_restore() saver = tf.train.Saver(ema_restore) 

准确率计算方法:

correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1)) accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))