概念

神经网络的深度和数据据体的深度(图像的通道数channels)要主要区分。

输入

1.得到一些数据,作为网络的输入。

2.在CNN中有filter,the size of filter is small。如上的filter为5*5,深度为3,这个3要在深度上穿过

输入数据的每一个位置,输入数据是三个通道;

3.filter 要完全覆盖输入数据的全部深度,用filter来和输入图像做卷积运算。

filter要在整个图像的空域范围内全部位置滑动,每一个位置filter和图像做点乘。这个filter是要学习的用W表示,我们也要学习这些filter,可以把filter看作是你的一堆W,然后在图像范围内滑动这个filter。

as folllows:

$w^{T}x + b$

where w denotes the filter and x denotes the patch of input image, 大小是5*5*3的小区域。

激活图给出了每个空间位置出滤波器的反应,将5*5的filter在32*32的输入数据上滑动,得到了28*28的激活图。

hei = ;
wid = ;
stride = ;
count = ;
step1 = ;
step2 = ;
pathchSize = ;
for x = + step1: stride : hei - patchSize +
for y = + step2 : stride : wid - patchSize +
count = count + ;
end
end out >>> count = >>> *

另一个滤波器与第一次滤波器计算无关,所以的滤波器都是相互独立的,假设有六个filter,然后输入数据每一个独立的计算与六个滤波器点乘,这个过程成为卷积运算,得到了一组28*28*6的激活图组,把他们沿着深度方向存储在一起。

操作:遍历这幅图像,重新表示这幅32*32的图像,表示为了28*28*6,又作为了后续层的输入,后一个filter为5*5*6(为了保持了输入的深度一致)假设有10个独立的filter做线性运算

感性的认识这些操作的意义

CNN最后会构建整个特征层级

随着网络的加深,组合成更大的特征块,用小的特征块组合在一起。所以初始值随机,空间上组合这个特征。

filters的堆叠

将滤波器产生的激活图沿着深度方向组合起来,然后把这些图作为下一个卷积层的输入,也就是不断的做这些图的组合。

Conv的大体布局

从图中可以看到大概为三个部分:

1. 卷积层 2.Relu层 (非线性变换层,进行阈值处理也是控制过拟合的方式) 3. 池化层pooling

一列中的每一行是一个激活图,每一个卷积层有10个滤波器

 filter的不同尺寸和步长(stride)对于得到的激活图的尺寸

1.计算可以取多少个patch的公式:

hei = ?;
wid = ?;
stride = ?;
count = ;
step1 = ;
step2 = ;
pathchSize = ?;
for x = + step1: stride : hei - patchSize +
for y = + step2 : stride : wid - patchSize +
count = count + ;
end
end

 2.计算输出的激活图的尺寸

$Result = (N-F)/Stride + 1$

where Result should be integer.

3.常用图像的填充(pad)

1.填充的默认值为0;

2.如果加上一圈边缘之后再做卷积,输出尺寸和输入尺寸一样大,这是我们想要的结果,这对于设计神经网络架构十分好,空间大小不变的性质。

3.对于3*3的滤波器,需要1圈才能保持空间大小不变,对于广义的F的大小,如何使空间大小不变呢?需要考虑填充的大小:

4.使用5*5的filter 会发现图像尺寸会随着时间的推进而变小,这是个不好的性质,尺寸从32-》28-》24,空间尺寸变小的速度非常快,我们不想让我们的图像尺寸减小的太快,我们希望做很大大小不会缩小的卷积层,用更少的数字表现原来的图像;希望表达的尺寸不变。

5.参数的计算

6.卷积层的总结:每次接收到的输入数据尺寸为W1*H2*D1,输出尺寸为W2*H2*D2;卷积层的四个超参数:

(1)K 是filter的数量(也表示卷积后的深度,总是2的指数,e,g,32 64 128 512,因为有时候会进入特殊的高效的计算流程,使用向量化表示,这是使用2的指数的原因)

(2)空间的延生F:经常3*3 S=1 空间尺寸不变、或者5*5 S=2 空间尺寸不变;filter的尺寸总是奇数,奇数尺寸的filter有更好的表达,3是有意义的最小尺寸了。

(3)步长S

(4)zero-padding的数量P

7.特例:1*1的卷积,每个滤波器在整个深度方向上做点乘,在整个深度方向上做64维的点乘,再做阈值化处理,有意义。

8.输入深度取决于你的图像通道,输出深度取决于你有多少个滤波器,比较重要的两个词:共享参数和局域连接;也就是说神经元在一个激活映射中共享相同的权值, 我们有5个不同的滤波器,结果从整体上观察数据,你有排列在3维空间中的神经元体,全部以一个局域模式,共享参数的状态关注着同一个数据体。

但是在深度方向上,它们都有不同的神经元,都有着输入数据体的相同的部分,它们的权重不同,它们各自和自己相同层的小伙伴分享权重。

局域连接和参数共享的优点是可以从视觉上控制模型能力,神经元在平面上想要计算相似的东西,例如小的边缘,这样的功能有意义。

下采样

空间尺寸的减小通常是在下采样层进行的。

直观概念:下采样层就是把输入数据拿过来,通过下采样达到空间上压缩的目的,下采样在每个激活映射中独立进行,as follows:

1.max pooling(效果最好的)

需要知道的下采样的超参数包括: 步长、filter的尺寸,深度保持不变。

全连接层(FC layer)

AlexNet

注意池化层没有参数,只有卷积层才有参数。

当在进行反向传播时一定要小心,因为参数是共享的,当你在用filter做卷积时,所有神经元都共享参数,你必须小心所有filter的梯度都汇总到一个权重

blob,

ZFNet

VGGNet 

在filter的大小等参数上做了很多的工作,整个VGG网络只用了3*3卷积核,滑动步长2和2*2的池化窗口,stride为2。

大多数的memory的消耗在前面的卷积部分,而大多数的参数集中在全连接层。

GooLeNet

使用了平均池化,在全连接层前大幅度的减小了参数的规模

Resnet

plain net 随着层数的增长反而错误率降低;按道理来说随着层数的增长,模型的性能应该更好,但是结果却是更坏。我们在优化层数上做的不够好

但是ResNet相反,当你提升层数时,模型的训练错误率和测试错误率上都持续地改进,所以你想用更多层数。

梯度“流经”这些权重并且后向传播,你需要做的是加法处理,加法在这里是分散梯度给所有的两部分,因此梯度会流向之前的一部分,同样也会跳过

这一部分,之间流向输入处,该结构让你的梯度直接从158层的softmax层跳达这里的卷积层,因此你可以训练处离图像很近的这些小层次。中间的这些家伙能够

能够学习到如何加入你的信号使得更有效。

另一种解释是这一层基本上是由默认的恒等运算,这些建立在顶部的恒等上,它只是让它更好的优化。

Resnet的训练

需要再看下Xavier/2的初始化方法BN可以使得学习率高一些

残差网络快速缩减了这个尺寸,它们打包了所有的大小,以便内存存下来更多的层次。

(Review cs231n) ConvNet的更多相关文章

  1. (Review cs231n) CNN in Practice

    Make the most of your data Data augmentation 加载图像后,对图像做一些变化,这些变换不改变图像的标签. 通过各种变换人为的增大数据集,可以避免过拟合提高模型 ...

  2. (Review cs231n) Object Detection

    目标:我们有几个类别,然后我们要在这张图中找到这些类的所有实例 解决思路:是否可以按照回归的思路进行求解呢? 但是受限制于确定的种类输出问题. 方法:分类和回归是解决问题的两个套路,我们现在对于目标的 ...

  3. (Review cs231n) Spatial Localization and Detection(classification and localization)

     重在图像的定位和检测的内容. 一张图片中只有一种给定类别标签的对象,定位则是图像中有对象框:再这些类中,每一个训练目标都有一个类和许多的图像内部对应类的位置选框. 猜想的仅是类标签,不如说它们是位置 ...

  4. (Review cs231n) Training of Neural Network2

    FFDNet---matlab 调用并批处理 format compact; global sigmas; % input noise level or input noise level map a ...

  5. (Review cs231n) Optimized Methods

    Mini-batch SGD的步骤: 1.Sample a batch of data 2.Forward prop it through the graph,get loss 3.backprop ...

  6. (Review cs231n) BN and Activation Function

    CNN网络的迁移学习(transfer learning) 1.在ImageNet上进行网络的预训练 2.将最上方的层,即分类器移除,然后将整个神经网络看成是固定特征提取器来训练,将这个特征提取器置于 ...

  7. (Review cs231n) The Gradient Calculation of Neural Network

    前言:牵扯到较多的数学问题 原始的评分函数: 两层神经网络,经过一个激活函数: 如图所示,中间隐藏层的个数的各数为超参数: 和SVM,一个单独的线性分类器需要处理不同朝向的汽车,但是它并不能处理不同颜 ...

  8. (Review cs231n) Gradient Vectorized

    注意: 1.每次更新,都要进行一次完整的forward和backward,想要进行更新,需要梯度,所以你需要前馈样本,马上反向求导,得到梯度,然后根据求得的梯度进行权值微调,完成权值更新. 2.前馈得 ...

  9. (Review cs231n) Gradient Calculation and Backward

    ---恢复内容开始--- 昨日之补充web. 求解下图的梯度的流动,反向更新参数的过程,表示为 输入与损失梯度的关系,借助链式法则,当前输入与损失之间的梯度关系为局部梯度乘以后一层的梯度. ---恢复 ...

随机推荐

  1. linux windows安装python的最佳方式,miniconda

    1.在linux安装python文章很多,但是步骤很多,没搞好还会把yum命令弄坏,要修复.这件事就发生在我身上,准确说不是我造成的,是总监自己安装python造成yum损坏的,然后需要运维去百度修改 ...

  2. Thread类的join()方法

    public class Demo { /** * Thread类的join()方法 * -------------------------------- * 1)join() * 2)join(lo ...

  3. ES6 扩展运算符 三点(...)

    含义 扩展运算符( spread )是三个点(...).它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列. console.log(...[, , ]) // 1 2 3 conso ...

  4. login流程

    DirServer增加,修改-后台网页操作 维护所有分区的当前信息创建,修改,上报分区信息分区:状态,版本号,注册量等 一.loginserver定时从dir同步所有区服的信息 登陆相关 1.CmdI ...

  5. C#Windows Service服务程序的安装/卸载、启动/停止 桌面客户端管理程序设计

    C#Windows Service服务程序的安装/卸载.启动/停止 桌面客户端管理程序设计 关于Windows Service程序的安装与卸载如果每次使用命令行操作,那简直要奔溃了,太麻烦而且还容易出 ...

  6. 将VSCode添加到右键

    https://www.cnblogs.com/Rexcnblog/p/8046371.html https://www.jianshu.com/p/b49002fa10a7 @echo Off :S ...

  7. 解决 nginx 出现 413 Request Entity Too Large 的问题

    1.若nginx用所用的 php 请求解析服务是 fpm, 则检查 /etc/php5/fpm/php.ini 文件中的参数 upload_max_filesize = 20M post_max_si ...

  8. git clean(转载)

    git clean命令用来从你的工作目录中删除所有没有tracked过的文件. git clean经常和git reset --hard一起结合使用. 记住reset只影响被track过的文件, 所以 ...

  9. Scala 中方法扩展实践

    前言 这个名字不知道取得是否合适,简单来说要干的事情就是给某个类型添加一些扩展方法,此场景在各种语言中都会用到,比如 C# 语言,如果我们使用一个别人写好的类库,而又想给某个类库添加一些自己封装的方法 ...

  10. Solve Error: Library not loaded: @rpath/RoutingHTTPServer.framework/RoutingHTTPServer

    在配置WebDriverAgent的时候,可能会遇到如下的错误: 2018-01-04 09:53:42.759370-0600 WebDriverAgentRunner-Runner[318:133 ...