densenet网络结构详解_网络dea模型

densenet网络结构详解_网络dea模型网络基本结构 我们放大一下DenseBlockDenseBlock 上图中每一次的输入都是经过Channel-wiseconcatenation后的,如k0+k,k为growthrate。denseblock一个核心的点就是:每一层的输入来自前面所有层的输出。如下,H2的输入=最开始的输入 + H1的输出= k0+kH3的输入=最开始的输入 …

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

网络基本结构

densenet网络结构详解_网络dea模型

 我们放大一下Dense Block

Dense Block

densenet网络结构详解_网络dea模型

 上图中每一次的输入都是经过Channel-wise concatenation后的,如k0+k,k为growth rate。

denseblock一个核心的点就是:每一层的输入来自前面所有层的输出。如下,

H2的输入 = 最开始的输入 + H1的输出 =  k0 + k

H3的输入 = 最开始的输入 + H1的输出 + H2的输出 = k0 + k + k = H2的输入 + H2的输出

H4的输入 = 最开始的输入 + H1的输出 + H2的输出 + H3的输出 = k0 + k + k + k =  H3的输入 + H3的输出 

H5的输入 = 最开始的输入 + H1的输出 + H2的输出 + H3的输出  + H4的输出 =  k0 + k + k + k + k=  H4的输入 + H4的输出

单看上面四个式子黑色加粗的部分,可以总结:

  • 假定输入层的特征图的channel数为k0,那么L层输入的channel数为k0+k(L-1)

再看后面蓝色加粗的部分,可知

  • 每一层的输入 = 前一层的输入+前一层的输出

从densenet的caffe结构图也可以看出来:

densenet网络结构详解_网络dea模型

从fig2可以看到,dense block中每个H操作3*3卷积前面都包含了一个1*1的卷积操作,称为bottleneck layer,目的是减少输入的feature map数量,一方面降维减少计算量,又能融合各个通道的特征。那为什么要减少特征图的数量呢?

假设一个denseblock,有32个子结构,也就是有32个H操作第32个子结构的输入是前面31层的输出结果,每层输出的channel是k(growth rate,这里假设k=32),那么如果不做bottleneck操作,第32层的H操作的输入就是31*32,近1000了。而加上1*1的卷积,代码中的1*1卷积的channel是growth rate*4,也就是128,然后再作为3*3卷积的输入。这就大大减少了计算量,这就是bottleneck。

block与block之间的连接采用transition layer

由于每个Dense Block结束后的输出channel个数很多,需要降维。Transition层包括一个1×1的卷积和2×2的AvgPooling,结构为BN+ReLU+1×1 Conv+2×2 AvgPooling。为什么需要降维呢?

还按照我们刚刚的假设,第32层的3*3卷积输出channel只有32个(growth rate),但是紧接着还会像前面几层一样有通道的concat操作,即将第32层的输出和第32层的输入做concat,前面说过第32层的输入是1000左右的channel,所以最后每个Dense Block的输出也是1000多的channel,所以需要减少维度。

这里以densenet121为例(k=32),可以看到每一层transition layer的卷积核个数是不一样的,经过transition layer层后,上个dense block的输出特征图数量就会减少。

densenet网络结构详解_网络dea模型

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/188597.html原文链接:https://javaforall.net

(0)
上一篇 2026年4月16日 上午9:04
下一篇 2026年4月16日 上午9:10


相关推荐

  • 什么是泛型,怎么使用泛型分析

    什么是泛型,怎么使用泛型分析1、泛型1:什么是泛型?泛型就是广泛的类型,也是一种数据类型,而这种数据类型可以是任意类型,编写过程中当中不能确定类型,创建对象时必须指定具体类型,不指定也可以,但是会出现一些错误。泛型是编译器行为,只能在编译期有效,如果能够跨过编译器,那么泛型就没有任何意义了。2、泛型类怎么定义泛型类?在类后面加<&g…

    2022年6月22日
    40
  • 数据结构 图的邻接表

    数据结构 图的邻接表呃,下面该写邻接表了…….邻接表的出现是因为图若是稀疏图,用邻接矩阵会造成空间的浪费,毕竟你要开辟一个一维数组和一个二维数组嘛,而且还是大开小用的那种。邻接表为了避免内存的浪费引入了链式存储,它的处理办法是:1.用一个一维数组存储顶点,当然你也可以用单链表存储,2.用单链表存储顶点的邻接点,可以将顶点改为结构体数组,结构体中存放邻接点的指针,邻接点也创建一个结构体,定义指针…

    2022年6月28日
    23
  • tomcat部署war包访问显示404

    tomcat部署war包访问显示404在eclipse导出的maven项目war包,放到tomcat下启动,顺利启动且无报错,但是浏览器访问该项目时显示404原因:未在server.xml中配置这几个项目,导致服务器查找不到解决方法:&lt;HostappBase="webapps"autoDeploy="true"name="localhost"unpackWARs="true"&gt;…

    2022年6月10日
    220
  • 三星刷机工具Odin图文刷机教程

    三星刷机工具Odin图文刷机教程解压完,双击安装包选择语言,语言栏选择simplifiedCinnese国家选择c朱雀网络www.zhuquewl.comROM包下载hina安装路径可选择其他驱动盘,或者直接安装亦可注意事项: 1)手机电池有个一半的电量或是更少点都没问题,反正不要刷机过程中没电就行。真是没电了,也没事,充电,重刷就行了。2)给手机做好备份。3)下载刷机包,就自己准备着下载。4)下载刷机工具,

    2022年7月21日
    20
  • 教程-经典Delphi教程网

    教程-经典Delphi教程网有理想+志同道合的人+取长补短去协同工作=完美团队一流的项目+三流的执行者=垃圾项目三流的项目+一流的执行者=完美项目自己公司网址:http://www.kaideruixin.icoc.cc/电脑管家误报提交地址:http://bbs.guanjia.qq.com/forum.php?mod=forumdisplay&fid=63本本驱动网站:http://www….

    2022年6月26日
    28
  • 摩尔线程实现智谱 GLM-5 大模型 Day-0 适配,国产 GPU 生态兼容再进一步 – 果核剥壳

    摩尔线程实现智谱 GLM-5 大模型 Day-0 适配,国产 GPU 生态兼容再进一步 – 果核剥壳

    2026年3月12日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号