[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的结构.
[CLPR] 卷积神经网络的结构的更多相关文章
- cuda-convnet 卷积神经网络 一般性结构卷积核个数 和 输入输出的关系以及输入输出的个数的说明:
卷积神经网络 一般性结构卷积核个数和 输入输出的关系以及输入输出的个数的说明: 以cifar-10为例: Initialized data layer 'data', producing3072 ou ...
- 神经网络:卷积神经网络CNN
一.前言 这篇卷积神经网络是前面介绍的多层神经网络的进一步深入,它将深度学习的思想引入到了神经网络当中,通过卷积运算来由浅入深的提取图像的不同层次的特征,而利用神经网络的训练过程让整个网络自动调节卷积 ...
- Tensorflow之卷积神经网络(CNN)
前馈神经网络的弊端 前一篇文章介绍过MNIST,是采用的前馈神经网络的结构,这种结构有一个很大的弊端,就是提供的样本必须面面俱到,否则就容易出现预测失败.如下图: 同样是在一个图片中找圆形,如果左边为 ...
- 深度学习——卷积神经网络 的经典网络(LeNet-5、AlexNet、ZFNet、VGG-16、GoogLeNet、ResNet)
一.CNN卷积神经网络的经典网络综述 下面图片参照博客:http://blog.csdn.net/cyh_24/article/details/51440344 二.LeNet-5网络 输入尺寸:32 ...
- 深度学习之卷积神经网络(CNN)
卷积神经网络(CNN)因为在图像识别任务中大放异彩,而广为人知,近几年卷积神经网络在文本处理中也有了比较好的应用.我用TextCnn来做文本分类的任务,相比TextRnn,训练速度要快非常多,准确性也 ...
- 神经网络6_CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)概念区分理解
sklearn实战-乳腺癌细胞数据挖掘(博客主亲自录制视频教程,QQ:231469242) https://study.163.com/course/introduction.htm?courseId ...
- 【原创 深度学习与TensorFlow 动手实践系列 - 3】第三课:卷积神经网络 - 基础篇
[原创 深度学习与TensorFlow 动手实践系列 - 3]第三课:卷积神经网络 - 基础篇 提纲: 1. 链式反向梯度传到 2. 卷积神经网络 - 卷积层 3. 卷积神经网络 - 功能层 4. 实 ...
- 【Python】keras卷积神经网络识别mnist
卷积神经网络的结构我随意设了一个. 结构大概是下面这个样子: 代码如下: import numpy as np from keras.preprocessing import image from k ...
- 卷积神经网络(CNN)在语音识别中的应用
前言 总结目前语音识别的发展现状,dnn.rnn/lstm和cnn算是语音识别中几个比较主流的方向.2012年,微软邓力和俞栋老师将前馈神经网络FFDNN(Feed Forward Deep Neur ...
随机推荐
- js正则表达式的使用详解
本文转自:http://www.jb51.net/article/39623.htm 1定义正则表达式2关于验证的三个这则表达式方法3正则表达式式的转义字符 1定义正则表达式在js中定义正则表达式很简 ...
- 解决[Xcodeproj] Unknown object version错误
错误描述: RuntimeError - [Xcodeproj] Unknown object version. /Library/Ruby/Gems/2.0.0/gems/xcodeproj-0.2 ...
- Linux环境下如何配置IP地址、MAC地址
Linux环境下如何配置IP地址.MAC地址 1.配置IP地址 进入配置IP地址路径,进行修改即可 cd /etc/network vim interface 加入以下内容: iface eth0 i ...
- HDU 1166 敌兵布阵(线段树 or 二叉索引树)
http://acm.hdu.edu.cn/showproblem.php?pid=1166 题意:第一行一个整数T,表示有T组数据. 每组数据第一行一个正整数N(N<=50000),表示敌人有 ...
- 使用IDEA2017创建java web +maven项目
1.首先,提前准备的东西:我使用的是IDEA2017,tomcat7,jdk1.:请将这些软件安装完成,环境变量配置完成,如何配置以及安装我就不复述了,百度上一堆一堆的,比我知道的详细多了. 2.下面 ...
- Linux命令详解-type
type命令用来显示指定命令的类型. 一个命令的类型可以是如下之一 alias 别名 keyword 关键字,Shell保留字 function 函数,Shell函数 ...
- Leetcode 52
//N皇后的基础上改了一点class Solution { public: int totalNQueens(int n) { ; vector<); DFS(pos,,res); return ...
- C#属性升级版--自动属性-chapter 3 P34-36
使用C#属性,能够通过将数据与它的设置和检索方法分离的方式公开类中的一段数据. 例如: namespace LanguageFeatures { public class Product { ...
- 将C语言的CRC32 代码转成JAVA的CRC32 代码
public class CustomerCRC32 { private static long[] crc32Table = new long[256]; static { long crcValu ...
- bzoj4811
题解: 对于每一个节点,我们建立v0,v1 v0表示0进过会怎么样 v1表示1进过会怎么样 然后线段树合并 代码: #include <cstdio> #include <cstri ...