GoogLeNet v1结构「建议收藏」

GoogLeNet v1结构「建议收藏」GooLeNetInception块GooLeNetGooLeNet是google2014年推出的深度神经网络模型,原论文名称为:Goingdeeperwithconvolutions,在沐神的书上也被叫做含并⾏连结的⽹络(主要由于Inception块中的结构)。该模型在2014年ILSVRC2014比赛中竞赛中夺得冠军,14年之后也在不断发展,这里就介绍一下初始的版本。Inception块GooLeNet思想有点类似于VGG,先构建块,网络主要通过块的堆叠实现,不过这里的块与VGG块不同,称

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

GoogLeNet是google2014年推出的深度神经网络模型,原论文名称为:Going deeper with convolutions,在沐神的书上也被叫做含并⾏连结的⽹络(主要由于Inception块中的结构)。该模型在2014年ILSVRC 2014比赛中竞赛中夺得冠军,14年之后也在不断发展,这里就介绍一下初始的版本。

Inception块

GoogLeNet思想有点类似于VGG,先构建块,网络主要通过块的堆叠实现,不过这里的块与VGG块不同,称之为Inception,GoogLeNet的核心就是Inception块,一个Inception块的结构如下图:
Inception块的结构
一个Inception块可以说是集合了LeNet,AlexNet,NiN,VGG其中的架构,包括3×3卷积层、1×1卷积层、5×5卷积层和池化层,可以从上图看到,Inception块与其他的什么VGG块、NiN块不一样的是,VGG与NiN块内部都是一条路的运算,而一个Inception块包括4条路,将输入通过不同的路得到不同的输出(注意这里的输出形状都是一样的),然后将这些输出在channel方向concat起来得到一个Inception的最后输出。我们从左到右将路记为第1,2,3,4路,一个Inception块的这些路具体介绍如下:
第一条路: 只用到了1×1的卷积核,所以输出不改变原输入的形状,输出channel数为超参数。
第二条路: 用到了1×1卷积核与3×3卷积核,1×1卷积层不改变输入形状,channel数自定,3×3卷积层的padding为1,即分别在四周添1行列,stride为1,输出的形状为 ( n − 3 + 2 + 1 ) / 1 = n (n-3+2+1)/1=n (n3+2+1)/1=n(n为输入长或者高),所以可以看到输出形状还是与输入相同,但channel数不一样。
第三条路: 用到了1×1卷积核与5×5卷积核,1×1卷积层不改变输入形状,channel数自定,5×5卷积层的padding为2,即分别在四周添加2行列,输出形状为 ( n − 5 + 4 + 1 ) / 1 = n (n-5+4+1)/1=n (n5+4+1)/1=n(n为输入长或者高),所以可以看到输出形状还是与输入相同,但channel数不一样。
第四条路: 用到了3×3最大池化与1×1卷积,最大池化的padding为1,每个channel输出形状还是与输入相同,接一个1×1的卷积层,也不改变输入形状。
最后将这四条路的输出按照通道数方向合并,得到一个Inception块的最后输出。
第一个Inception块可由下图表示(来自沐神):
第一个Inception块描述

GoogLeNet

GoogLeNet核心就是不同Inception块的堆叠,原作者使用的是9个Inception块,我们可以把GoogLeNet分成5段,称之为5个stage,具体结构如下:
在这里插入图片描述
具体来说,GoogLeNet开始使用一个7×7的卷积层,3×3的最大池化;1×1卷积层,3×3的最大池化,3×3的最大池化;然后是两个Inception块,当然前一个块的输出形状要对应后一个块的输入形状,接一个3×3的最大池化;5个Inception块,接一个3×3的最大池化;2个Inception块,接一个全局平均池化,最后接一个全连接得到最后输出。

代码可见:链接
原论文可见:GoogLeNet

参考资料:李沐—动手学深度学习v2
深度学习笔记 11/16

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/170456.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • C语言实现学生成绩管理系统设计

    C语言实现学生成绩管理系统设计本系统有**增加学生记录、修改学生记录、删除学生记录、按姓名查询学生记录、按C语言成绩对学生进行排序、退出系统**6大功能。能够对学生的姓名,学号,c语言成绩做相应的操作。在检测到输入成绩大于55时,会自动加上5。该管理系统设计功能模块图:下面是源代码:#include”stdio.h”#include”string”/*定义学生结构体*/structStudent

    2022年6月20日
    27
  • 面向对象程序设计的基本原理_面向对象程序设计c++答案

    面向对象程序设计的基本原理_面向对象程序设计c++答案Java程序设计(面向对象)- 设计原理

    2022年4月22日
    39
  • 【面试必备】这道MySQL面试题难住了90%的程序员。。。「建议收藏」

    【面试必备】这道MySQL面试题难住了90%的程序员。。。

    2022年2月11日
    45
  • 关于Virt-P2V那点事

    关于Virt-P2V那点事在实现企业服务器虚拟化的时候,许多系统已经是NT或Windows 2000的老系统,要安装上虚拟机还得重装系统,但是已经找不到光盘或是驱动程序了,因此重装系统是无法成功的,要将旧服务器虚拟化,最好的办法就是实体机转换(P2V)。一、什么是P2V?P2V是Physical to virtual的简称,即物理到虚拟。它是指将物理机上的系统、应用软件以及数据转换到虚拟机中。它的工作原理是将物

    2022年7月26日
    7
  • python保存两位小数的几种方法,python2保留小数

    python保存两位小数的几种方法,python2保留小数python保存两位小数的几种方法文章目录:一、保留两位小数且做四舍五入处理1、使用字符串格式化2、使用python内置的round()函数3、使用python内置的decimal模块二、保留两位小数且不做四舍五入处理1、使用序列中的切片2、使用re正则匹配模块一、保留两位小数且做四舍五入处理1、使用字符串格式化>>>x=3.1415926>&…

    2022年8月11日
    11
  • Java是什么?主要是干什么的?「建议收藏」

    Java是什么?主要是干什么的?「建议收藏」随着Java技术不断发展,许多人都想问:Java是什么?主要是干什么的呀?现在小朗来为大家解惑。java是一种高级计算机语言,一种可以编写跨平台应用软件、完全面向对象的程序设计语言。那Java主要是干嘛的呀?一、java可以做网站Java主要可以用于编写网站,如今许多商业网站都用Jsp写的,JSP全称JavaServerPages。它是一种动态网站技术性,例如大家了解的163,一些政府门户网站全是选用JSP撰写的。因此学习培训Java的同学们能够找开发网站层面的工作中,并且…

    2022年7月7日
    24

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号