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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 递归改成循环_递归比循环效率高吗

    递归改成循环_递归比循环效率高吗Java递归,递归改循环为什么大家都说不建议用递归?递归容易造成栈溢出,在jdk1.5前虚拟机给每个栈桢的运行空间128kb,在1.5以后为1m的运行空间.递归是指先进后出,也就是说第一进栈的对象会最后一个出站,然后栈桢的空间只有1m,生产环境的数据需要递归的深度,一般情况下我们无法通过测试来进行模拟。所以对于递归的深度不可把控的情况下,是有栈溢出的风险。一个简单的例子测试递归的深度递…

    2022年9月17日
    2
  • cesium加载离线地图_echarts离线地图

    cesium加载离线地图_echarts离线地图Cesium加载谷歌离线地图

    2022年9月20日
    2
  • 小红书用户画像分析_抖音运营之:用户画像的分析方法

    小红书用户画像分析_抖音运营之:用户画像的分析方法不管是从事哪种新媒体,新媒体的核心都是内容,优质的内容才能吸引来用户并留下用户,而用户则是所有运营人员的最终目的,如何服务好用户,如何让用户持续留存下来并保持活性,是每个运营人员的难题,那么如何服务用户呢?想要服务用户首先要了解用户,今天96新媒体就来为大家介绍一下如何通过用户画像来了解用户。一、基础数据用户的基础数据包括用户的一些基本的信息,例如年龄、性别、收入、教育情况等等,这些是最底层的数据…

    2022年5月2日
    98
  • linux17:时间间隔计算脚本练习——距离你的生日还有多少天

    linux17:时间间隔计算脚本练习——距离你的生日还有多少天需求距离一个未来的日子还有多少天距离一个过去的日子过去多少天#!/bin/bash#name——timeDistance.sh#function#input a date, to calculate how many days to this day#2022.1.18 daxiongread -p “please input your date like YYYYMMDD ex>20150716 : ” date2#test whether or not have

    2022年8月11日
    7
  • torchvision – ImportError: No module named torchvision

    torchvision – ImportError: No module named torchvisiontorchvision-ImportError:NomodulenamedtorchvisionimageandvideodatasetsandmodelsfortorchdeeplearningThetorchvisionpackageconsistsofpopulardatasets,modelarchitectures,andcommonimagetransformationsforcomputervision.1.Installat

    2022年6月24日
    35
  • 数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器

    数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器第1章 引言        随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用,每天几十亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。通过数据切分来提高网站性能,横向扩展数据层已经成为架构研发人员首选的方式。水平切分数据库:可…

    2022年6月13日
    22

发表回复

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

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