GoogLeNet

创新点:

通过多种卷积核叠加网络复杂性

  1. 学习多种卷积
  2. 提升计算效率

GoogLeNet网络深度达到22层

1x1卷积降低维度

  • 降低计算量,提升计算效率

网络结构



代码

import torch
from torch import nnNUM_CLASSES = 10class BasicConv2d(nn.Module):def __init__(self, in_channels, out_channels, **kwargs):super(BasicConv2d, self).__init__()self.conv = nn.Conv2d(in_channels, out_channels, bias=False, **kwargs)self.bn = nn.BatchNorm2d(out_channels, eps=0.001)self.relu = nn.ReLU(inplace=True)def forward(self, x):x = self.conv(x)x = self.bn(x)x = self.relu(x)return xclass Inception(nn.Module):def __init__(self, in_channel, n1_1, n3x3red, n3x3, n5x5red, n5x5, pool_plane):super(Inception, self).__init__()# first lineself.branch1x1 = BasicConv2d(in_channel, n1_1, kernel_size=1)# second lineself.branch3x3 = nn.Sequential(BasicConv2d(in_channel, n3x3red, kernel_size=1),BasicConv2d(n3x3red, n3x3, kernel_size=3, padding=1))# third lineself.branch5x5 = nn.Sequential(BasicConv2d(in_channel, n5x5red, kernel_size=1),BasicConv2d(n5x5red, n5x5, kernel_size=5, padding=2))# fourth lineself.branch_pool = nn.Sequential(nn.MaxPool2d(3, stride=1, padding=1),BasicConv2d(in_channel, pool_plane, kernel_size=1))def forward(self, x):y1 = self.branch1x1(x)y2 = self.branch3x3(x)y3 = self.branch5x5(x)y4 = self.branch_pool(x)output = torch.cat([y1, y2, y3, y4], 1)return outputclass GoogLeNet(nn.Module):def __init__(self, num_classes=NUM_CLASSES):super(GoogLeNet, self).__init__()self.conv1 = BasicConv2d(3, 64, kernel_size=7, stride=2, padding=3)self.max_pool1 = nn.MaxPool2d(3, stride=2)self.conv2 = BasicConv2d(64, 192, kernel_size=3, stride=1, padding=1)self.max_pool2 = nn.MaxPool2d(3, stride=2)self.a3 = Inception(192, 64, 96, 128, 16, 32, 32)self.b3 = Inception(256, 128, 128, 192, 32, 96, 64)self.max_pool3 = nn.MaxPool2d(3, stride=2)self.a4 = Inception(480, 192, 96, 208, 16, 48, 64)self.b4 = Inception(512, 160, 112, 224, 24, 64, 64)self.c4 = Inception(512, 128, 128, 256, 24, 64, 64)self.d4 = Inception(512, 112, 144, 288, 32, 64, 64)self.e4 = Inception(528, 256, 160, 320, 32, 128, 128)self.max_pool4 = nn.MaxPool2d(3, stride=2)self.a5 = Inception(832, 256, 160, 320, 32, 128, 128)self.b5 = Inception(832, 384, 192, 384, 48, 128, 128)self.avg_pool = nn.AvgPool2d(7)self.dropout = nn.Dropout(0.4)self.classifier = nn.Linear(1024, num_classes)def forward(self, x):x = self.conv1(x)x = self.max_pool1(x)x = self.conv2(x)x = self.max_pool2(x)x = self.a3(x)x = self.b3(x)x = self.max_pool3(x)x = self.a4(x)x = self.b4(x)x = self.c4(x)x = self.d4(x)x = self.e4(x)x = self.max_pool4(x)x = self.a5(x)x = self.b5(x)x = self.avg_pool(x)x = self.dropout(x)x = x.view(x.size(0), -1)x = self.classifier(x)return x

Ref

  1. Pytorch实现GoogLeNet解决各类数据集(cifar10/mnist/imagenet)分类
  2. Pytorch实现GoogLeNet

PyTorch 实现经典模型4:GoogLeNet相关推荐

  1. CNN经典模型:GoogLeNet(从Inception v1到v4的演进)

    GoogLeNet和VGG是2014年ImageNet挑战赛(ILSVRC14)的双雄,GoogLeNet获得第一名.VGG获得第二名,这两类模型结构的共同特点是层次更深了.VGG继承了LeNet以及 ...

  2. PyTorch 实现经典模型2:AlexNet

    AlexNet 网络结构 论文总结 成功使用ReLU作为CNN的激活函数,并验证效果在较深的网络中超过了Sigmoid.成功解决了Sigmoid在网络较深时的梯度弥散问题. 训练时使用Dropout随 ...

  3. PyTorch 实现经典模型3:VGG

    VGG 网络结构 代码 1) 导入必需的包 # 1) 导入必需的包 import torch import torch.nn as nn import torch.nn.functional as F ...

  4. PyTorch 实现经典模型6:RCNN (Fast RCNN, Faster RCNN)

    RCNN (Fast RCNN, Faster RCNN) 适用范围 图像分类(Image classification) 目标检测(Object detection) 网络结构 代码 Ref R-C ...

  5. PyTorch 实现经典模型5:ResNet

    ResNet 网络结构 代码 #------------------------------用50行代码搭建ResNet---------------------------------------- ...

  6. PyTorch 实现经典模型1:LeNet5

    模型:LeNet5 网络结构 符号说明 网络参数 代码实现 1) 导入必需的包 2) 搭建网络模型 3) 导入使用的数据集 4) 训练模型 5) 保存模型 6) 测试模型效果 所遇错误 '_Incom ...

  7. PyTorch 实现经典模型8:FCN

    FCN 网络结构 代码 class fcn(nn.Module):def __init__(self, num_classes):super(fcn, self).__init__()self.sta ...

  8. PyTorch 实现经典模型7:YOLO (v1, v2, v3, v4)

    YOLO (v1, v2, v3, v4) 网络结构 YOLO v3 网络结构 代码 Ref <机器爱学习>YOLO v1深入理解 <机器爱学习>YOLOv2 / YOLO90 ...

  9. 动手学深度学习(二十二)——GoogLeNet:CNN经典模型(五)

    文章目录 1. 含并行连结的网络(GoogLeNet) 1.1 Inception块 1.2 GoogLeNet模型 2. 动手实现简化的GoogLeNet模型 2.1 实现Inception块 2. ...

最新文章

  1. Android通过JNI调用驱动程序(完全解析实例)
  2. html经典上中下三段的布局设计
  3. boost::spirit模块实现字符分类示例
  4. 深入理解领域驱动设计中的聚合
  5. Python中的堆实现:heapq 模块——利用堆结构实现快速访问数据流中的中位数
  6. Linux复位usb hub,Linux USB subsystem --- USB Hub initialize
  7. python下载url_三种Python下载url并保存文件的代码详解
  8. URAL 2047 Maths 打表 递推
  9. 巧用这些可视化分析工具,让你的工作效率提升50%!
  10. Linux 主机超全渗透测试命令汇总
  11. 军事卫星行业调研报告 - 市场现状分析与发展前景预测
  12. FileSystemObject详解
  13. Ubuntu学习日记--Lesson8:make 21 | tee log.txt命令解析 (错误输出,重定向,管道符)
  14. TensorFlow相关的一些技巧
  15. 推荐:绝对是最好用的公式编辑器
  16. 怎样用计算机制作思维导图,手把手教你如何用电脑绘制思维导图
  17. 水晶报表CrystalReports很强大也很简单!
  18. 读懂才会用 : 瞅瞅Redis的epoll模型
  19. php doctrine datetime,关于php:Doctrine 2.1 – datetime列的默认值
  20. mysql库函数说明_MySQL 数据库函数库

热门文章

  1. P1967 货车运输
  2. BZOJ4004: [JLOI2015]装备购买
  3. 初识--AVSpeechSynthesizer
  4. 使用Windbg调试StackOverflowException异常
  5. HTML DOM Event对象
  6. sql server 交叉表查询实例-成绩统计
  7. ifstream eof()函数
  8. R语言数据可视化 ggplot2基础3 添加几何对象
  9. Python之re模块 —— 正则表达式操作
  10. 05Hibernate基本配置