利用手写数字识别项目详细描述BP深度神经网络的权重学习

本篇文章是针对学习《深度学习入门》(由日本学者斋藤康毅所著陆羽杰所译)中关于神经网络的学习一章来总结归纳一些收获。


本书提出神经网络的学习分四步:1.mini-batch 2.计算梯度 3.更新参数 4.重复前面步骤

1.从识别手写数字项目学习神经网络

所谓“从数据中学习”是指 可以由数据#自动决定权重#。当解决较为简单的问题,使用简单的神经网络时,网络里的权重可以人为的手动设置,去提取输入信息中特定的特征。但是在实际的神经网络中,参数往往是成千上万,甚至可能上亿的权重,这个时候人为手动设置是不可能完成的任务。因此,当可以由数据去学习得到网络的权重,是一件计算机智能的事。本篇文章通过实现手写数字识别的实际项目来分析神经网络的学习。 有效的利用数据有两种方案:1.先从图像中提取特征量,再用机器学习技术学习这些特征量的模式。 第一步:从图像中提取特征量的方法是人为的设置图像特征提取的滤波器,常用的滤波器有:SIFT,SURF和HOG等,使用这些滤波器将图像数据转换为向量,最后对转换后的向量使用机器学习中的SVM,KNN等分类器进行学习。这个方案的缺点是就是特征提取的滤波器需要人为手动设计,针对不同的问题就要设置不同的滤波器。2.神经网络(深度学习)的方法就是完全用数据去训练权重,找出相应的特征,做出判断。如图1在书上的P83页的图4-2有一个更加简洁直观地比较了两种方案的区别。神经网络的优点是对所有的问题都可以用同样的流程来解决。

2.手写数字识别

 2.1 训练集

识别手写数字是用来学习神经网络的一个经典的项目。手写数字识别的#标准库#是MINIST手写数字数据集

MINST数据集在LeCun的博客上(http://yann.lecun.com/exdb/mnist/)。在本书中用代码的方式从网站上下载了数据集,并且将所下载到的数据转为字典型数据统一存在了.pkl文件中。这一操作需要用到很多Python的库,以及存储数据时的格式操作时,可以看出对编程有较高的要求。

猜你喜欢

转载自www.cnblogs.com/happy-sir/p/10878101.html