这里的实战是根据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_data=zip(validati

这篇笔记详细介绍了基于深度学习的MNIST手写体分类任务。首先阐述了任务和数据,包括数据集的结构和读取方式。接着,通过`mnist_loader.py`文件解析数据,并进行适当的预处理,以适应神经网络的输入格式。最后,文章提到了神经网络部分,但未展示具体代码。
最低0.47元/天 解锁文章
1687





