这里的实战是根据Neural Networks and Deep Learning的前两章整理出来的。用了它提供的数据集以及一些代码。然后自己修改了他的一些代码,使得更加容易理解。
一.任务及数据
就是自己写一个神经网络来实现对于MNIST数据集的手写体分类任务。作者提供了一个数据集,这里就使用作者的数据集。
MNIST数据集
下载下来直接放在工程目录里面就行了。
训练(train) : 50,000
验证(validation): 10,000
测试(test): 10,000
从任务和输入就能够得到大概的网络结构:
损失函数为二次误差函数
激活函数为sigmoid函数。
二.读取数据
读取数据由mnist_loader.py这个文件实现。
代码:
# -*- coding: utf-8 -*-
from __future__ import print_function,division
import pickle
import gzip
import numpy as np
#从数据集中载入数据
def load_data():
file=gzip.open('mnist.pkl.gz','rb')
training_data,validation_data,test_data=pickle.load(file)
file.close()
return training_data,validation_data,test_data
#改编数据集的格式
def data_wrapper():
tr_d,va_d,te_d=load_data()
#训练集
training_inputs=[np.reshape(x,(784,1)) for x in tr_d[0]]
training_labels=[vectorized_label(x) for x in tr_d[1]]
training_data=zip(training_inputs,training_labels)
#验证集
validation_inputs=[np.reshape(x,(784,1)) for x in va_d[0]]
validation