zoukankan      html  css  js  c++  java
  • 利用手写数字识别项目详细描述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的库,以及存储数据时的格式操作时,可以看出对编程有较高的要求。

  • 相关阅读:
    Codeforces Round #365 (Div. 2) D
    Codeforces Round #414 C. Naming Company
    Codeforces Round #365 (Div. 2) B
    LA 6893 The Big Painting(矩阵Hash)
    Gym100783C Golf Bot(FFT)
    POJ 2481 Cows(树状数组)
    POJ 2352 Stars
    POJ 2299 Ultra-QuickSort(树状数组+离散化)
    LightOJ 1341 Aladdin and the Flying Carpet(唯一分解定理)
    LightOJ 1356 Prime Independence(质因数分解+最大独立集+Hopcroft-Carp)
  • 原文地址:https://www.cnblogs.com/happy-sir/p/10878101.html
Copyright © 2011-2022 走看看