搭建全连接神经网络识别mnist数据集(上)
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笔记》
- 搭建全连接神经网络识别mnist数据集(下)
- 识别MNIST数据集:用Python实现神经网络
- MNIST手写数字体识别(全连接神经网络)
- 【手把手TensorFlow】三、神经网络搭建完整框架+MNIST数据集实践
- python神经网络案例——FC全连接神经网络实现mnist手写体识别
- MNIST数据识别--全连接神经网络
- 基于TensorFlow1.4.0的FNN全连接网络识别MNIST手写数据集
- tensorflow 全连接神经网络 MNIST手写体数字识别
- 识别MNIST数据集之(二):用Python实现神经网络
- 神经网络——实现MNIST数据集的手写数字识别
- 从零开始,搭建CNN(卷积)神经网络识别Mnist手写体
- 深度学习与TensorFlow实战(六)全连接网络基础—MNIST数据集输出手写数字识别准确率
- 利用tensorflow一步一步实现基于MNIST 数据集进行手写数字识别的神经网络,逻辑回归
- 使用tensorflow利用神经网络分类识别MNIST手写数字数据集,转自随心1993
- 【Tensorflow tf 掏粪记录】笔记三——用tf接口打造全连接神经网络识别MNIST
- Python神经网络代码识别手写字的实现流程(一):加载mnist数据
- 【Python】keras神经网络识别mnist
- 经典神经网络进行MNIST手写数字识别系列(一):ALEXNET
- TensorFlow入门(一) 搭建BP神经网络识别MNIST数据集
- Tensorflow-浅层神经网络(MNIST数据集)