zoukankan      html  css  js  c++  java
  • [CLPR] 卷积神经网络的结构

    本文翻译自: http://www.codeproject.com/Articles/16650/Neural-Network-for-Recognition-of-Handwritten-Digi

    正如前文所述, 程序并未实现一个通用神经网络, 也并非一个神经网络开发环境. 它其实是一个非常特殊的网络, 一个5层卷积神经网络. 输入层接收 29x29 的灰度手写数字图片, 输出层由10个神经元组成, 判断结果对应的神经元输出1, 其余输出-1(理想).

    CNN是基于"权值共享"的NN. 主要思想是使用一个小的核窗, 它在前一层的神经元上移动. 在本实现中, 我使用的是5x5的尺寸. 核中的每个元素都有一个独立于其他元素的权值. 所以共有25个权值(外加1个偏置). 这个核被前一层的所有神经元共享.

    图例和说明.

    下图是CNN的一个图示:

    输入层(#0) 是灰度图像. MNIST图像库中的图像是28x28, 但基于Simard在"Best Practices for Convolutional Neural Networks Applied to Visual Document Analysis," 中的描述, 图片尺寸被放大为29x29. 所以输入层共有841个神经元.

    层#1 是一个卷积层, 拥有6个特征图, 每个特征图的尺寸为13x13 像素/神经元. 特征图中的每个神经元都是一个输入层的5x5的卷积核, 但输入层中的像素每隔一个就被跳过. 结果就是每行每列均有(29-5)/2 + 1 = 13个卷积中心. 所以层#1共有13*13*6 = 1014个神经元和(5x5 +1) * 6 = 156个权值.

    另外, 每个神经元都有26个连接(5x5+1), 所以共有1014*26 = 26364个连接. 共享权值的好处在此处显现: 因为权值是共享的, 尽管有26364个连接, 只需要控制156个权值即可. 如果是全连接的网络, 则有大量的权值需要训练.

    层#2 也是卷积层, 但有50个特征图, 每个特征图都是5x5的. 所以共有5x5x50 = 1250个神经元, (5x5+1)*6*50 = 7800个权值, 1250x26 = 32500个连接.

    在介绍层#3前, 我们需要再讲解一些网络的结构, 特别是层#2. 正如上文提及, 每一个层#2中的特征图都连接到前一层的6个特征图. 这是一个设计选择, 但并非唯一的选择. 我认为, 设计是和Simard博士的设计相同的. 但和LeCun博士的设计不同. LeCun博士有意地没有把层#2的每个特征图都和前一层的所有特征图连接起来, 而是选择性地连接到前一层的某一些特征图上.

    层#3 和 层#4 是全连接的层.

    本实现的层#4和LeCun博士的不同, 他使用的是RBF网络, 但出于简洁和易于实现的目的, 我选择的是Simard的结构.

  • 相关阅读:
    java.sql.SQLException: 不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK
    STS工具各版本下载网址
    SpringBoot访问不了JSP但却能进入后台
    springboot o.a.tomcat.util.scan.StandardJarScanner : Failed to scan [file:/D:/apache-maven-3.0.5[系统找不到指定路径]
    STS工具:mybayis连接oracle数据库
    springBoot怎样访问静态资源?+静态资源简介
    springboot注解
    8.12-14 df 、mkswap、swapon、swapoff、sync
    8.5-7 mkfs、dumpe2fs、resize2fs
    8.2-3 partprobe、tune2fs
  • 原文地址:https://www.cnblogs.com/lancelod/p/4062448.html
Copyright © 2011-2022 走看看