MINST数据库是由Yann提供的手写数字数据库文件,其官方下载地址http://yann.lecun.com/exdb/mnist/
数据库的里的图像都是28*28大小的灰度图像,每个像素的是一个八位字节(0~255)
这个数据库主要包含了60000张的训练图像和10000张的测试图像,主要是下面的四个文件
其中:
训练集(包括5000的验证集):
Training set images: train-images-idx3-ubyte.gz (9.9 MB, 解压后 47 MB, 包含 60,000 个样本)
Training set labels: train-labels-idx1-ubyte.gz (29 KB, 解压后 60 KB, 包含 60,000 个标签)
测试集:
Test set images: t10k-images-idx3-ubyte.gz (1.6 MB, 解压后 7.8 MB, 包含 10,000 个样本)
Test set labels: t10k-labels-idx1-ubyte.gz (5KB, 解压后 10 KB, 包含 10,000 个标签)
我们学习的第一门程序设计语言可能都是从Hello World入手的,在人工智能下的tensorflow框架,也就是说人工智能的Hello World可能就是MNIST数据集识别,下面附上我的代码:
前向传播(mnist_forward.py):
import tensorflow as tf
import tensorflow.contrib as contrib
INPUT_NODE = 784
OUTPUT_NODE = 10
LAYER1_NODE = 500
def get_weight(shape, regularizer):
# tf.truncated_normal()从截断的正态分布中输出随机值, shape表示生成张量的维度,stddev是标准差
w = tf.Variable(tf.truncated_normal(shape, stddev=0.1))
# 将每个变量的正则化损失加入集合losses中
if regularizer != None:
tf.add_to_collection('losses', tf.contrib.layers.l2_regularizer(regularizer)(w))
return w
def get_bias(shape):
b = tf.Variable(tf.zeros(shape))
return b
def forward(x, regularizer):
w1 = get_weight([INPUT_NODE, LAYER1_NODE], regularizer)
b1 = get_bias([