输出层的残差

  和BP一样,CNN的输出层的残差与中间层的残差计算方式不同,输出层的残差是输出值与类标值得误差值,而中间各层的残差来源于下一层的残差的加权和。输出层的残差计算如下:

下一层为采样层(subsampling)的卷积层的残差

  当一个卷积层L的下一层(L+1)为采样层,并假设我们已经计算得到了采样层的残差,现在计算该卷积层的残差。从最上面的网络结构图我们知道,采样层(L+1)的map大小是卷积层L的1/(scale*scale),ToolBox里面,scale取2,但这两层的map个数是一样的,卷积层L的某个map中的4个单元与L+1层对应map的一个单元关联,可以对采样层的残差与一个scale*scale的全1矩阵进行克罗内克积进行扩充,使得采样层的残差的维度与上一层的输出map的维度一致,Toolbox的代码如下,其中d表示残差,a表示输出值:

net.layers{l}.d{j} = net.layers{l}.a{j} .* (1 - net.layers{l}.a{j}) .* expand(net.layers{l + 1}.d{j}, [net.layers{l + 1}.scale net.layers{l + 1}.scale 1])

扩展过程:


下一层为卷积层(subsampling)的采样层的残差
当某个采样层L的下一层是卷积层(L+1),并假设我们已经计算出L+1层的残差,现在计算L层的残差。采样层到卷积层直接的连接是有权重和偏置参数的,因此不像卷积层到采样层那样简单。现再假设L层第j个map Mj与L+1层的M2j关联,按照BP的原理,L层的残差Dj是L+1层残差D2j的加权和,但是这里的困难在于,我们很难理清M2j的那些单元通过哪些权重与Mj的哪些单元关联,Toolbox里面还是采用卷积(稍作变形)巧妙的解决了这个问题,其代码为:
convn(net.layers{l + 1}.d{j}, rot180(net.layers{l + 1}.k{i}{j}), 'full');
rot180表示对矩阵进行180度旋转(可通过行对称交换和列对称交换完成),为什么这里要对卷积核进行旋转,答案是:通过这个旋转,'full'模式下得卷积的正好抓住了前向传输计算上层map单元与卷积和及当期层map的关联关系,需要注意的是matlab的内置函数convn在计算卷积前,会对卷积核进行一次旋转,因此我们之前的所有卷积的计算都对卷积核进行了旋转:
复制代码
a =
1     1     1
1     1     1
1     1     1
k =
1     2     3
4     5     6
7     8     9
>> convn(a,k,'full')
ans =
1     3     6     5     3
5    12    21    16     9
12    27    45    33    18
11    24    39    28    15
7    15    24    17     9
复制代码
convn在计算前还会对待卷积矩阵进行0扩展,如果卷积核为k*k,待卷积矩阵为n*n,需要以n*n原矩阵为中心扩展到(n+2(k-1))*(n+2(k-1)),所有上面convn(a,k,'full')的计算过程如下:


实际上convn内部是否旋转对网络训练没有影响,只要内部保持一致(即都要么旋转,要么都不旋转),所有我的卷积实现里面没有对卷积核旋转。如果在convn计算前,先对卷积核旋转180度,然后convn内部又对其旋转180度,相当于卷积核没有变。
为了描述清楚对卷积核旋转180与卷积层的残差的卷积所关联的权重与单元,正是前向计算所关联的权重与单元,我们选一个稍微大一点的卷积核,即假设卷积层采用用3*3的卷积核,其上一层采样层的输出map的大小是5*5,那么前向传输由采样层得到卷积层的过程如下:


卷积神经网络残差计算相关推荐

  1. CNN 卷积神经网络-- 残差计算

    前言 本文主要是解析论文Notes onConvolutional Neural Networks的公式,参考了http://blog.csdn.net/lu597203933/article/det ...

  2. 卷积神经网络参数计算及卷积层输出尺寸计算

    一.卷积神经网络参数计算 CNN一个牛逼的地方就在于通过感受野和权值共享减少了神经网络需要训练的参数的个数,所谓权值共享就是同一个Feature Map中神经元权值共享,该Feature Map中的所 ...

  3. 卷积神经网络计算题试题_卷积神经网络的计算

    转自:https://zhuanlan.zhihu.com/p/63174774 1. 卷积 卷积神经网络中的卷积是指定义好卷积核(kernel),并对图像(或者特征图,feature map)进行滑 ...

  4. 卷积神经网络感受野计算指南

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者:Dang Ha The Hien 编译:ronghuaiya ...

  5. 卷积神经网络——残差网络(ResNet)

    在实际的试验中发现,随着卷积层和池化层的叠加,不但没有出现学习效果越来越好的情况,反而两种问题: 梯度消失和梯度爆炸 梯度消失:若每一层的误差梯度小于1,反向传播时,网络越深,梯度越趋近于0 梯度爆炸 ...

  6. 怎么用显卡计算_卷积神经网络在移动端集成显卡上的加速

    作者: 王乐园 王贻达 AWS AI 本文谈的是在移动端加速卷积神经网络.虽然AWS是个云服务公司,我们同样重视edge上的计算.现代终端设备一般都跟云端服务器相连,但只要可能,我们都希望计算可以在本 ...

  7. 卷积神经网络中各个卷积层的设置及输出大小计算的详细讲解

    我将从以下几个方面来进行解说: 1.卷积神经网络的结构 2.卷积神经网络的计算 3.以AlexNet为例进行详细讲解 4.常见的两个卷积层设置的问题 1.卷积神经网络的结构 卷积神经网络(CNN)由输 ...

  8. 卷积神经网络精确率不增反降_深度学习 第四门课:卷积神经网络(Convolutional Neural Networks)...

    "本文大约有 4864 字. 01|引言 在这两周时间里,我主要的学习内容如下: 重新复习了一遍前三门课: 学完第四门课卷积神经网络(ConvolutionalNeural Networks ...

  9. 卷积神经网络在图像识别上的应用介绍(一)

    目录 1. 简介 2. 图像识别相关技术 2.1 视觉模式识别 2.1.1 特征描述与不变性 2.1.2 模型选择与泛化性能 2.2 卷积神经网络 2.2.1 神经网络简介 2.2.2 卷积神经网络发 ...

最新文章

  1. cocos2dx android protobuf,Quick_Cocos2d_x V3.3 Protobuf Android
  2. 洛谷P3388 【模板】割点(割顶)
  3. Delphi XE7 Update1修正列表
  4. DengAI —数据预处理
  5. BZOJ 2818 Gcd
  6. uboot mkimage使用详解
  7. 从0开始架构一个IOS程序——03 — -分包用添加pch全局引用文件
  8. 手动配置ubuntu无线网络
  9. 从0到1带你手撸一个请求重试组件,不信你学不会!
  10. linux系统为什么很重要,为什么Linux系统始终取代不了Windows?这4个原因80%的人不知道!...
  11. 漫画:跑上百万次代码验证三门问题
  12. JavaScript--百度地图那些坑
  13. 录录录屏(video321)--1款亲测好用的免费高清录屏软件。你一定无法拒绝(附使用教程)
  14. matlab在mac中好用吗,Matlab Mac版上手
  15. 巧用讯飞TTS进行文本合成语音(LINUX操作系统)
  16. 自媒体剪辑中常用的premere快捷键
  17. icloud无法验证服务器,iPhone提示“验证失败 连接到icloud时出错”怎么解决?
  18. 敏感性、特异性、假阳性、假阴性
  19. 软件工程作业--网上书店
  20. dijkstra习题集

热门文章

  1. mac charles代理设置
  2. 分形吧matlab,使用matlab画分形图.pdf
  3. Oracle的 wm_concat 的排序问题,Oracle的 listagg 函数
  4. this.name=name
  5. 从侵权看“人肉搜索”
  6. 2021BI及数据可视化领域最具商业合作价值企业盘点
  7. dgl edges_浏览器趋势2016年10月:Microsoft Edges下降
  8. module ‘sklearn.utils._openmp_helpers‘ has no attribute ‘__pyx_capi__‘
  9. 顶级“黑客”能厉害到什么地步?无信号也能上网,专家:高端操作!
  10. 麦克风有电流声怎么办?