葡萄娱乐官方上学笔记TF033

ResNet(Residual Neural Network卡塔尔国,微软研究院 Kaiming
He等4名中中原人民共和国人提议。通过Residual Unit练习152层深神经网络,ILSVRC
二零一四竞技季军,3.二分之一top-5错误率,参数量比VGGNet低,效果特别特出。ResNet结构,相当慢加速超深神经互联网练习,模型正确率十分大进步。英斯ption
V4,英斯ption Module、ResNet结合。ResNet推广性好。

瑞十教师Schmidhuber(LSTM互连网发明者,1999年卡塔尔(قطر‎建议Highway
Network。化解极深神经网络难训练难题。改进每层激活函数,以前激活函数只是对输入非线性别变化换y=H(x,WH卡塔尔(英语:State of Qatar),Highway
NetWork保留一定比重原始输入x,y=H(x,WH卡塔尔国·T(x,WT卡塔尔(英语:State of Qatar)+x·C(x,WC卡塔尔(英语:State of Qatar),T调换周详,C保留周详,令C=1-T。后边风华正茂层消息,一定比例不经过矩阵乘法和非线性别变化换,直接传输下后生可畏层。Highway
Network,gating
units学习决定网络音讯流,学习原始音信应封存比例。gating机制,Schmidhuber教授早年LSTM循环神经互连网gating。几百上千层深Highway
Network,间接梯度下降算法练习,协作种种非线性激活函数,学习极深神经网络。Highway
Network允许练习率性深度网络,优化措施与互联网深度独立。

ResNet
允许原始输入音讯一向传输到后层。Degradation问题,不断深化神经网络深度,正确率先上升到达饱和,再下落。ResNet灵感,用全等映射间接将前层输出传到后层。神经网络输入x,期望输出H(x卡塔尔(英语:State of Qatar),输入x直接传到输出作初始结果,学习目的F(x卡塔尔=H(x卡塔尔国-x。ResNet残差学习单元(Residual
Unit卡塔尔(قطر‎,不再念书共同体输出H(x卡塔尔,只学习输出输入差异H(x卡塔尔-x,残差。

ResNet,非常多旁路支线,输入直接连到后层,后层直接攻读残差,shortcut或connections。直接将输入音信绕道传到输出,体贴新闻完整性,整个网络只学习输入、输出差异,简化学习目的、难度。

两层残新式学习单元富含三个生龙活虎律输出通道数3×3卷积。三层残差网络用Network
In Network和英斯ption Net
1×1卷积。在上游3×3卷积前后都用1×1卷积,先降维再升维。假如输入输出维度不相同,对输入x线性映射转换维度,再接后层。

layername outputsize 18-layer 34-layer 50-layer 101-layer 152-layer
conv1 112×112 7×7,64,stride 2
conv2_x 56×56 3×3 max pool,stride 2
3×3,64×2 3×3,64×3 1×1,64×3 1×1,64×3 1×1,64×3
3×3,64 3×3,64 3×3,64 3×3,64 3×3,64
1×1,256 1×1,256 1×1,256
conv3_x 28×28 3×3,128×2 3×3,128×4 1×1,128×4 1×1,128×4 1×1,128×8
3×3,128 3×3,128 3×3,128 3×3,128 3×3,128
1×1,512 1×1,512 1×1,512
conv4_x 14×14 3×3,256×2 3×3,256×6 1×1,256×6 1×1,256×23 1×1,256×36
3×3,256 3×3,256 3×3,256 3×3,256 3×3,256
1×1,1024 1×1,1024 1×1,1024
conv5_x 7×7 3×3,512×2 3×3,512×3 1×1,512×3 1×1,512×3 1×1,512×3
3×3,512 3×3,512 3×3,512 3×3,512 3×3,512
1×1,2048 1×1,2048 1×1,2048
1×1 average pool,1000-d fc,softmax
FLOPs 1.8×10^9 3.6×10^9 3.8×10^9 7.6×10^9 11.3×10^9

ResNet布局,清除层数不断加剧练习集引用误差增大现象。ResNet网络操练抽样误差随层数增大渐渐减小,测验集表现变好。Google借鉴ResNet,建议Inception
V4和英斯ption-ResNet-V2,ILSVRC错误率3.08%。《Identyty Mappings in Deep
Residual Networks》建议ResNet
V2。ResNet残差学习单元传播公式,前馈新闻和陈述功率信号可间接传输。skip
connection 非线性激活函数,替换Identity
Mappings(y=x卡塔尔(قطر‎。ResNet每层都用Batch Normalization。

施密德huber教师,ResNet,未有gates
LSTM网络,输入x传递到后层进程一向产生。ResNet等价OdysseyNN,ResNet相近多层网络间集成方法(ensemble卡塔尔。

《The Power of Depth for Feedforward Neural
Networks》,理论声明加深互联网比加宽网络更有效。

Tensorflow实现ResNet。contrib.slim库,原生collections。collections.namedtuple设计ResNet基本Block模块组named
tuple,成立Block类,独有数据布局,未有具体方法。标准Block,四个参数,scope、unit_fn、args。
Block(‘block1’, bottleneck, [(256, 64, 1)] * 2 + [(256, 64,
2)]卡塔尔(英语:State of Qatar),block1是Block名称(或scope卡塔尔国,bottleneck是ResNet
V2残差学习单元。最终参数是Block
args,args是列表,每种成分对应bottleneck残差学习单元。前面七个因素(256,
64, 1卡塔尔(قطر‎,第三要素(256, 64,
2卡塔尔,每种元素都以莫斯利安tuple(depth,depth_bottleneck,stride卡塔尔国。(256, 64,
3卡塔尔国代表bottleneck残差学习单元(多少个卷积层卡塔尔(قطر‎,第三层输出通道数depth
256,前两层输出通道数depth_bottleneck 64,中间层步长stride
3。残差学习单元布局[(1×1/s1,64),(3×3/s3,64),(1×1/s1,256)]。

降采集样板subsample方法,参数inputs(输入卡塔尔(英语:State of Qatar)、factor(采集样板因子卡塔尔(英语:State of Qatar)、scope。fator1,不做修正直接回到inputsx,不为1,用slim.max_pool2d最大池化达成。1×1池化尺寸,stride步长,达成降采集样板。

定义conv2d_same函数创设卷积层,借使stride为1,用slim.conv2d,padding形式SAME。stride不为1,显式pad
zero。pad zero总数kernel_size-1
pad_beg为pad//2,pad_end为余下一些。tf.pad补零输入变量。已经zero
padding,只需padding格局VALID的slim.conv2d成立此卷积层。

概念堆成堆Blocks函数,参数net输入,blocks是Block class
列表。outputs_collections收集各end_points
collections。两层循环,每一个Block,各个Residual
Unit聚成堆。用八个tf.variable_scope命名残差学习单元block/unit_1形式。第2层循环,每个Block每个Residual
Unit
args,展开depth、depth_bottleneck、stride。unit_fn残差学习单元生成函数,顺序创设连接全数残差学习单元。slim.utils.collect_named_outputs函数,输出net增多到collection。全数Block全体Residual
Unit聚积完,再次回到最终net作stack_blocks_dense函数结果。

创建ResNet通用arg_scope,定义函数参数暗中认可值。定义练习标识is_training暗许True,权重衰减速度weight_decay暗中认可0.001。BN衰减速率暗许0.997,BN
epsilon暗许1e-5,BN
scale暗中认可True。先安装好BN每一类参数,通过slim.arg_scope设置slim.conv2d暗中认可参数,权重正则器设L2正则,权重早先化器设slim.variance_scaling_initializer(卡塔尔国,激活函数设ReLU,规范化器设BN。最大池化padding方式私下认可设SAME(诗歌中用VALID卡塔尔国,特征对齐更简约。多层嵌套arg_scope作结果再次回到。

概念大旨bottleneck残差学习单元。ResNet V2故事集Full Preactivation Residual
Unit 变种。每层前都用Batch
Normalization,输入preactivation,不在卷积进行激活函数管理。参数,inputs输入,depth、depth_bottleneck、stride,outputs_collections收集end_points
collection,scope是unit名称。用slim.utils.last_dimension函数获取输入最后维度输出通道数,参数min_rank=4节制起码4个维度。slim.batch_norm
输入 Batch Normalization,用ReLU函数预激活Preactivate。

定义shorcut,直连x,即使残差单元输入通道数depth_in、输出通道数depth生机勃勃致,用subsample,步长stride,inputs空间降采集样本,确定保证空间尺寸和残差大器晚成致,残差中间层卷积步长stride;假设不相似,用步长stride
1×1卷积改换通道数,变生龙活虎致。

定义residual(残差卡塔尔(قطر‎,3层,1×1尺寸、步长1、出口通道数depth_bottleneck卷积,3×3尺寸、步长stride、输出通道数depth_bottleneck卷积,1×1尺码、步长1、出口通道数depth卷积,得最后residual,最终层未有正则项还未激活函数。residual、shorcut相加,得最后结果output,用slim.utils.collect_named_outputs,结果增多collection,再次回到output函数结果。

概念生成ResNet
V2主函数。参数,inputs输入,blocks为Block类列表,num_classes最终输出类数,global_pool标识是或不是加最终生机勃勃层全局平均池化,include_root_block标识是还是不是加ResNet互连网最前方7×7卷积、最大池化,reuse标记是或不是重用,scope整个互联网名称。定义variable_scope、end_points_collection,通过slim.arg_scope设slim.con2d、bottleneck、stack_block_dense函数的参数outputs_collections默认end_points_colletion。根据include_root_block标志,制造ResNet最前头64输出通道步长2的7×7卷积,接步长2的3×3最大池化。七个增长幅度2层,图片尺寸减少为四分之二。用stack_blocks_dense生成残差学习模块组,依照标识增加全局平均池化层,用tf.reduce_mean完毕全局平均池化,效能比间接avg_pool高。依照是不是有分类数,增添输出通道num_classes1x1卷积(无激活函数无正则项卡塔尔(英语:State of Qatar),增添Softmax层输出互联网结果。用slim.utils.convert_to_dict
转变collection为Python dict。最终回到net、end_points。

50层ResNet,4个残差学习Blocks,units数量为3、4、6、3,总层数(3+4+6+3卡塔尔国x3+2=50。残差学习模块前,卷积、池化把尺寸收缩4倍,前3个Blocks包括步长2层,总尺寸裁减4×8=32倍。输入图片尺寸最终变224/32=7。ResNet不断用步长2层减削尺寸,输出通道数持续增加,到达2048。

152层ResNet,第二Block units数8,第三Block units数36。

200层ResNet,第二Block units数23,第三Block units数36。

评测函数time_tensorflow_run测量检验152层ResNet
forward质量。图片尺寸224×224,batch size 32。is_training
FLAG设False。resnet_v2_152创办网络,time_tensorflow_run评测forward质量。耗费时间扩张二分一,实用卷积神经网络构造,帮衬超深网络演习,实际工业使用forward质量不差。

参谋资料:
《TensorFlow实战》

应接付费咨询(150元每小时),作者的Wechat:qingxingfengzi