网站建设属于广告费吗装修公司logo设计图片
web/
2025/10/3 20:21:49/
文章来源:
网站建设属于广告费吗,装修公司logo设计图片,wordpress 顶部登录,做婚礼邀请函网站GoogLeNet 致敬 LeNet
GoogLeNet V1
Inception块#xff0c;增加网络宽度#xff0c;在卷积操作时可以提取不同尺度特征利用11卷积进行降维#xff0c;减少参数量参数量计算#xff1a;上一层通道数 卷积层的长度^2 下一层通道数采用模块化结构Stage最后进行全局平均池…GoogLeNet 致敬 LeNet
GoogLeNet V1
Inception块增加网络宽度在卷积操作时可以提取不同尺度特征利用1×1卷积进行降维减少参数量参数量计算上一层通道数 × 卷积层的长度^2 × 下一层通道数采用模块化结构Stage最后进行全局平均池化average pooling能让输入图像大小不用固定辅助分类器为训练提供更多梯度信息将网络模块化三个阶段每个阶段内部feature map不变结束后下降样到下个stage这种模式在后面经常出现如resnet,mobilenet,shufflenet等
GoogLeNet V2
BatchNormalizationBN数据归一化对每个训练的mini-batch做归一化 BN使得模型可以使用较大的学习率而不用特别关心诸如梯度爆炸或消失等优化问题降低了模型效果对初始权重的依赖可以加速收敛一定程度上可以不使用Dropout这种降低收敛速度的方法但却起到了正则化作用提高了模型泛化性即使不使用ReLU也能缓解激活函数饱和问题能够学习到从当前层到下一层的分布缩放scaling方差shift期望系数 问题 网络训练过程中不止学习本层数据而且要适应上层的分布这里相当于规定了同一的输入格式减少适应上层分布的过程。 解决方法将输入值减均值除上方差z值化。
GoogLeNet V3
贡献 提出通用的网络结构设计准则引入卷积分解提高效率空间可分离卷积引入高效的feature map降维平滑样本标注 准则 避免特征表示上的瓶颈尤其在神经网络的前若干层。慎用 如果在网络的浅层35×35×320被降维到17×17×320会丢失大量信息后面不可逆。所以对feature map进行降维的同时会对channel进行升维。 特征的数目越多收敛越快不怎么流行 增加1×3和3×1激活输出产生相互解耦的特征表示。 合理压缩特征维度数通道数来减少计算量 用1×1的卷积先降维再特征提取相邻通道信息比较像 网络的深度和宽度需要等比例的放大和缩小 没有具体给出指导后期EfficientNetV1,V2才填了这个坑 “优化”辅助分类器 去掉了 优化池化操作 并行做卷积和池化然后再合并 优化标签 将one hot标签平滑一点(1-label_smoothing)*one_hot_labelslabel_smoothing/num_classeslabel_smothing 0.1num_classes 1000
GoogLeNet V4不流行太复杂而且没意义
以结果为导向网络解释性不强。但是融合了残差网络缺点人为赋予了模型大量的先验知识
GoogLeNet V5很简单
Xception
1×1卷积核在通道维度上进行相乘求和3*3卷积核在空间维度上做信息处理普通卷积同时在通道和空间上进行处理普通的卷积核是三维的先做通道上处理后做空间上处理解耦精度更高计算量更小 补充
如果训练的网络结果不好不一定是网络结构不好有可能是超参数不好。如梯度弥散模型自己学习到的知识比人为赋予的归纳偏置上限更高古人诚不欺我大道至简
GoogLeNetV5论文名称Xception: Deep learning with depthwise separable convolutions GoogLeNetV5论文下载链接 https://openaccess.thecvf.com/content_cvpr_2017/papers/Chollet_Xception_Deep_Learning_CVPR_2017_paper.pdf
Xception代码
import torch.nn as nnclass SeperableConv2d(nn.Module): def __init__(self, input_channels, output_channels, kernel_size, **kwargs):super().__init__()self.depthwise nn.Conv2d(input_channels,input_channels,kernel_size,groupsinput_channels,biasFalse,**kwargs)self.pointwise nn.Conv2d(input_channels, output_channels, 1, biasFalse)def forward(self, x):x self.depthwise(x)x self.pointwise(x)return xclass EntryFlow(nn.Module):def __init__(self):super().__init__()self.conv1 nn.Sequential(nn.Conv2d(3, 32, 3, padding1, biasFalse,stride2),nn.BatchNorm2d(32),nn.ReLU(inplaceTrue))self.conv2 nn.Sequential(nn.Conv2d(32, 64, 3, padding1, biasFalse),nn.BatchNorm2d(64),nn.ReLU(inplaceTrue))self.conv3_residual nn.Sequential(SeperableConv2d(64, 128, 3, padding1),nn.BatchNorm2d(128),nn.ReLU(inplaceTrue),SeperableConv2d(128, 128, 3, padding1),nn.BatchNorm2d(128),nn.MaxPool2d(3, stride2, padding1),)self.conv3_shortcut nn.Sequential(nn.Conv2d(64, 128, 1, stride2),nn.BatchNorm2d(128),)self.conv4_residual nn.Sequential(nn.ReLU(inplaceTrue),SeperableConv2d(128, 256, 3, padding1),nn.BatchNorm2d(256),nn.ReLU(inplaceTrue),SeperableConv2d(256, 256, 3, padding1),nn.BatchNorm2d(256),nn.MaxPool2d(3, stride2, padding1))self.conv4_shortcut nn.Sequential(nn.Conv2d(128, 256, 1, stride2),nn.BatchNorm2d(256),)#no downsamplingself.conv5_residual nn.Sequential(nn.ReLU(inplaceTrue),SeperableConv2d(256, 728, 3, padding1),nn.BatchNorm2d(728),nn.ReLU(inplaceTrue),SeperableConv2d(728, 728, 3, padding1),nn.BatchNorm2d(728),nn.MaxPool2d(3, 1, padding1))#no downsamplingself.conv5_shortcut nn.Sequential(nn.Conv2d(256, 728, 1),nn.BatchNorm2d(728))def forward(self, x):x self.conv1(x)x self.conv2(x)residual self.conv3_residual(x)shortcut self.conv3_shortcut(x)x residual shortcutresidual self.conv4_residual(x)shortcut self.conv4_shortcut(x)x residual shortcutresidual self.conv5_residual(x)shortcut self.conv5_shortcut(x)x residual shortcutreturn xclass MiddleFLowBlock(nn.Module):def __init__(self):super().__init__()self.shortcut nn.Sequential()self.conv1 nn.Sequential(nn.ReLU(inplaceTrue),SeperableConv2d(728, 728, 3, padding1),nn.BatchNorm2d(728))self.conv2 nn.Sequential(nn.ReLU(inplaceTrue),SeperableConv2d(728, 728, 3, padding1),nn.BatchNorm2d(728))self.conv3 nn.Sequential(nn.ReLU(inplaceTrue),SeperableConv2d(728, 728, 3, padding1),nn.BatchNorm2d(728))def forward(self, x):residual self.conv1(x)residual self.conv2(residual)residual self.conv3(residual)shortcut self.shortcut(x)return shortcut residualclass MiddleFlow(nn.Module):def __init__(self, block):super().__init__() self.middel_block self._make_flow(block, 8)def forward(self, x):x self.middel_block(x)return xdef _make_flow(self, block, times):flows []for i in range(times):flows.append(block())return nn.Sequential(*flows)class ExitFLow(nn.Module):def __init__(self):super().__init__()self.residual nn.Sequential(nn.ReLU(),SeperableConv2d(728, 728, 3, padding1),nn.BatchNorm2d(728),nn.ReLU(),SeperableConv2d(728, 1024, 3, padding1),nn.BatchNorm2d(1024),nn.MaxPool2d(3, stride2, padding1))self.shortcut nn.Sequential(nn.Conv2d(728, 1024, 1, stride2),nn.BatchNorm2d(1024))self.conv nn.Sequential(SeperableConv2d(1024, 1536, 3, padding1),nn.BatchNorm2d(1536),nn.ReLU(inplaceTrue),SeperableConv2d(1536, 2048, 3, padding1),nn.BatchNorm2d(2048),nn.ReLU(inplaceTrue))self.avgpool nn.AdaptiveAvgPool2d((1, 1))def forward(self, x):shortcut self.shortcut(x)residual self.residual(x)output shortcut residualoutput self.conv(output)output self.avgpool(output)return outputclass Xception(nn.Module):def __init__(self, block, num_classes100):super().__init__()self.entry_flow EntryFlow()self.middel_flow MiddleFlow(block)self.exit_flow ExitFLow()self.fc nn.Linear(2048, num_classes)def forward(self, x):x self.entry_flow(x)x self.middel_flow(x)x self.exit_flow(x)x x.view(x.size(0), -1)x self.fc(x)return xdef xception(num_classes):return Xception(MiddleFLowBlock, num_classesnum_classes)
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/86400.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!