手写神经网络解决解决Mnist数字集
Mnist数据集介绍和训练数据准备
使用的是mnist.npz文件作为数据集。npz实际上是numpy提供的数组存储方式,简单的可看做是一系列npy数据的组合,利用np.load函数读取后得到一个类似字典的对象,可以通过关键字进行值查询,关键字对应的值其实就是一个npy数据。扩展名为.npy的文件为np用来保存未压缩的多个数组的文件格式。存取的方法 np.load np.save 。 具体 mnist数据集常见格式(npz、gz等)简介
import numpy as np
def vectorized_result(j):
"""将标签从一个字段表示的(0,1.....9)转换为1个用10维向量表示的值。称为热独编码"""
e = np.zeros((10, 1))
e[j] = 1.0
return e
try:
data = np.load('mnist.npz')
print(data.keys())
x_train, y_train, x_test, y_test = data['x_train'],data['y_train'],data['x_test'],data['y_test']
print(len(x_train),len(y_train),len(x_test),len(y_test))
# 可以将其中一条数据保存成txt文件,查看一下,会对这组数据有个直观的感受
np.savetxt('test.txt',x_train[0],fmt='%3d',newline='\n')
# 将数据归一化
x_train, x_test = x_train/255.0, x_test/255.0
except Exception as e:
print('%s' %e)
training_data=[(x.reshape((784,1)),vectorized_result(y)) for x, y in zip(x_train, y_train)]
test_data=[(x.reshape((784,1)),y) for x, y in zip(x_test, y_test)]
简单神经网络的几个重要部分
激励函数:sigmoid
该方法主要用来对向量进行sigmoid激励
def sigmoid(z):