×

PyTorch教程8.8之设计卷积网络架构

消耗积分:0 | 格式:pdf | 大小:0.73 MB | 2023-06-05

王凯

分享资料个

过去的部分带我们参观了计算机视觉的现代网络设计。我们涵盖的所有工作的共同点是它严重依赖科学家的直觉。许多架构在很大程度上受到了人类创造力的启发,而在很大程度上受到了对深度网络提供的设计空间的系统探索的影响。尽管如此,这种网络工程方法已经取得了巨大的成功。

由于 AlexNet(第 8.1 节)在 ImageNet 上击败了传统的计算机视觉模型,因此通过堆叠卷积块构建非常深的网络变得很流行,所有这些都是由相同的模式设计的。尤其,3×3卷积由 VGG 网络(第 8.2 节)推广NiN(第 8.3 节)表明即使1×1通过添加局部非线性,卷积可能是有益的。此外,NiN 通过跨所有位置的聚合解决了在网络头部聚合信息的问题。GoogLeNet(8.4节)在其Inception block中加入了多个不同卷积宽度的分支,结合了VGG和NiN的优点。ResNets(第 8.6 节)改变了对身份映射的归纳偏差(来自f(x)=0). 这允许非常深的网络。将近十年后,ResNet 设计仍然流行,证明了它的设计。最后,ResNeXt(第 8.6.5 节)添加了分组卷积,在参数和计算之间提供了更好的权衡。挤压和激发网络 (SENets) 是用于视觉的变形金刚的前身,可实现位置之间的高效信息传输 Hu等人,2018 年他们通过计算每个通道的全局注意力函数来实现这一点。

到目前为止,我们省略了通过神经架构搜索 (NAS)获得的网络Liu等人,2018 年Zoph 和 Le,2016 年我们之所以选择这样做,是因为它们的成本通常很高,依赖于蛮力搜索、遗传算法、强化学习或某种其他形式的超参数优化。给定一个固定的搜索空间,NAS 使用搜索策略根据返回的性能估计自动选择架构。NAS 的结果是单个网络实例。EfficientNets 是这次搜索的显着成果 Tan 和 Le,2019 年

下面我们讨论一个与寻求单一最佳网络完全不同的想法。它在计算上相对便宜,它会在途中产生科学见解,并且在结果质量方面非常有效。让我们回顾一下Radosavovic等人的策略( 2020 )设计网络设计空间该策略结合了手动设计和 NAS 的优势。它通过对网络分布进行操作 并以某种方式优化分布以获得整个网络系列的良好性能来实现这一点。它的结果是RegNets,特别是 RegNetX 和 RegNetY,以及一系列用于设计高性能 CNN 的指导原则。

import torch
from torch import nn
from torch.nn import functional as F
from d2l import torch as d2l
from mxnet import init, np, npx
from mxnet.gluon import nn
from d2l import mxnet as d2l

npx.set_np()
from flax import linen as nn
from d2l import jax as d2l
import tensorflow as tf
from d2l import tensorflow as d2l

8.8.1. AnyNet 设计空间

下面的描述紧跟Radosavovic等人的推理 。( 2020 )加上一些缩写以使其符合本书的范围。首先,我们需要一个供网络系列探索的模板。本章设计的共同点之一是网络由主干主体 头部组成。. stem 执行初始图像处理,通常通过具有较大窗口大小的卷积。主体由多个块组成,执行从原始图像到对象表示所需的大量转换。最后,头部将其转换为所需的输出,例如通过用于多类分类的 softmax 回归器。反过来,身体由多个阶段组成,以降低的分辨率对图像进行操作。事实上,主干和每个后续阶段都占空间分辨率的四分之一。最后,每个阶段由一个或多个块组成。这种模式对所有网络都很常见,从 VGG 到 ResNeXt。事实上,对于通用 AnyNet 网络的设计, Radosavovic等人。( 2020 )使用了 ResNeXt 块图 8.6.5

https://file.elecfans.com/web2/M00/AA/42/pYYBAGR9Nf6ACtcVAAZq5CR9HWc465.svg

图 8.8.1 AnyNet 设计空间。号码(c,r)沿每个箭头指示通道数c和决议 r×r当时的图像。从左到右:由主干、主体和头部组成的通用网络结构;身体由四个阶段组成;阶段的详细结构;块的两种替代结构,一种没有下采样,另一种将每个维度的分辨率减半。设计选择包括深度di, 输出通道数ci, 组数gi和瓶颈比ki对于任何阶段i.

让我们详细回顾一下图 8.8.1中概述的结构。如前所述,AnyNet 由主干、主体和头部组成。词干将 RGB 图像(3 通道)作为输入,使用 3×3与 stride 的卷积2,然后是批量规范,将分辨率减半r×rr/2×r/2. 此外,它生成c0作为身体输入的通道。

由于该网络旨在与形状的 ImageNet 图像配合使用 224×224×3,身体用于将其减少到 7×7×c4通过 4 个阶段(回想一下 224/21+4=7), 每个最终的步幅为2. 最后,head 通过全局平均池采用完全标准的设计,类似于 NiN(第 8.3 节),然后是一个完全连接的层以发出一个n维向量为 n-类分类。

大多数相关的设计决策都是网络主体固有的。它分阶段进行,每个阶段都由我们在第 8.6.5 节中讨论的相同类型的 ResNeXt 块组成那里的设计再次完全通用:我们从一个块开始,通过使用一个步长将分辨率减半2(图8.8.1最右边 )。为了匹配这一点,ResNeXt 块的剩余分支需要通过1×1卷积。此块后跟可变数量的附加 ResNeXt 块,这些块使分辨率和通道数均保持不变。请注意,常见的设计实践是在卷积块的设计中添加一个小瓶颈。因此,瓶颈比 ki≥1我们提供一些渠道

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.obk20.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'PyTorch教程8.8之设计卷积网络架构',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"//www.obk20.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);