您的位置:首页 > 理论基础 > 计算机网络

搭建全连接神经网络识别mnist数据集(上)

2019-07-15 23:10 204 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/qq_35154223/article/details/95938958

mnist手写数据集

什么是mnist数据集:

包含7万张黑底白字手写数字图片,其中55000张为训练集,5000张为验证集(validation),10000张为测试机。每张图片大小为28 ×\times× 28像素,图片中纯黑色像素值为0,纯白色像素值为1。数据集的标签是长度为10的一维数组,数组中每个元素索引号对应数字出现的概率。
例如:一张28*28像素的图片变为长度为784的一维数组[0. 0. 0. 0.231 0.234 0.974 … 0. 0. 0.]输入神经网络。该图片的标签为[0. 0. 0. 0. 0. 0. 1. 0. 0. 0.],标签中索引号为6的元素为1,表示该图片6出现的概率是100%。则该图片对应的识别结果是6。

加载mnist数据集:

使用input_data模块中的read_data_sets()函数加载mnist数据集。

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

read_data_sets()函数有两个参数,第一个参数表示数据集存放的路径,第二个参数表示数据集的存取形式。当第二个参数为True时,表示已独热码的形式存取数据集。read_data_sets()函数运行时,会检查指定路径内是否已经有数据集,若指定路径中没有数据集,则自动下载,并分为训练集(train)、验证集(validation)、测试集(test)。

查看mnist样本数:

  • 返回训练集train样本数:
print("train data size:", mnist.train.num_examples)

输出结果:train data size: 55000

  • 返回验证集validation样本数:
print("validation data size:", mnist.validation.num_examples)

输出结果: validation data size: 5000

  • 返回测试集test样本数
print("test data size:", mnist.test.num_examples)

输出结果:test data size: 10000

查看mnist数据集

  • 使用train.labels函数返回mnist数据标签集
    例如:想要查看第0张图片的标签,则使用如下函数mnist.train.labels[0],输出array([0,0,0…1,0,…0])
  • 使用train.images函数返回mnist数据集图片像素值
    例如:在mnist数据集中,若想要查看训练集中第0张图片的像素值,则使用如下函数mnist.train.image[0]。

使用mnist.train.next_batch()函数将数据输入到神经网络

BATCH_SIZE=200
xs,ys=mnist.train.next_batch(BATCH_SIZE)
print("xs shape:",xs.shape)
print("ys shape:",ys.shape)

输出结果:

xs shape(200,784)
ys shape(200,10)

mnist.train.next_batch(BATCH_SIZE)函数表示随机从训练集中抽取BATCH_SIZE个样本输入到神经网络中,并将训练样本的像素值和标签分别赋给xs和ys。

常用函数

  • tf.get_collection("")表示从collection集合中抽出全部变量生成一个列表
  • tf.add()函数表示将参数列表中对应元素相加
    例如:
x=tf.constant([1,2],[1,2])
y=tf.constant([1,1],[1,1])
z=tf.add(x,y)
  • tf.cast(x,dtype)函数表示将参数x转换为指定数据类型
    例如:
A=tf.convert_to_tensor(np.array([[1,2,3,4],[5,6,7,8]]))
print(A.dtype)
b=tf.cast(A,tf.float32)
print(B.dtype)

输出结果:

<dtype:'int64'>
<dtype:'float32>
  • tf.equal()函数表示对比两个矩阵或者向量。若对应元素相等,则在对应位置返回True;否则在对应位置返回False。
    例如:
A=[[1,3,4,5,6]]
B=[[1,3,4,3,2]]
with tf.Session() as sess:
print(sess.run(tf.equal(A,B))

输出结果:

[[True Ture True False False]]
  • tf.reduce_mean(x,axis)函数表示求取矩阵或张量在指定维度的平均值。若不指定第二个参数,则在所有元素中取平均值;若指定第二个参数为0,则在第一维元素上求平均值,即求每一列的平均值;若指定第二个参数为1,则在第二维元素上求平均值,即求每一行的平均值。
  • tf.argmax(x,axis)函数返回指定维度axis下,参数x中最大值索引号。例如:
    在tf.argmax([1,0,0],0)中,返回0
  • os.path.join()函数表示把参数字符串按照路径命名规则连接。
    例如:
    import os
    os.path.join(’/hello/’,‘good/boy’,‘doiido’)
    输出结果:’/hello/good/boy/doiido’
  • 字符串.split()函数表示按照指定“拆分符”对字符串进行拆分,返回拆分列表。
    例如:
    ‘./model/mnist_model-1001’.split(’/’)[-1].split(’-’)[-1]将返回字符串’1001’
  • tf.Graph().as_default()函数表示将当前设置成为默认图,并返回一个上下文管理器。该函数一般与with关键字搭配使用,应用于将已经定义好的神经网络在计算图浮现。
    例如:with tf.Graph().as_default() as g,表示将在Graph()内定义的节点加入到计算图g中。

总结

本章介绍了mnist数据集的内容和使用方法,以及搭建识别mnist数据集的神经网络中常用的tensorflow工具函数。这些工具不仅对该场景有用,也是许多深度学习应用的基石。下一章将介绍具体的全连接神经网络搭建流程以及代码。

中国大学mooc《人工智能实践:Tensorflow笔记》

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: