吴恩达深度学习笔记:卷积神经网络(Foundations of Convolutional Neural Networks)2.7-2.8

news2024/11/20 14:22:42

目录

  • 第四门课 卷积神经网络(Convolutional Neural Networks)
    • 第二周 深度卷积网络:实例探究(Deep convolutional models: case studies)
      • 2.7 Inception 网络(Inception network)
      • 2.8 使 用 开 源 的 实 现 方 案 ( Using open-source implementations)

第四门课 卷积神经网络(Convolutional Neural Networks)

第二周 深度卷积网络:实例探究(Deep convolutional models: case studies)

2.7 Inception 网络(Inception network)

在上节视频中,你已经见到了所有的 Inception 网络基础模块。在本视频中,我们将学习如何将这些模块组合起来,构筑你自己的 Inception 网络。

在这里插入图片描述
Inception 模块会将之前层的激活或者输出作为它的输入,作为前提,这是一个28×28×192 的输入,和我们之前视频中的一样。我们详细分析过的例子是,先通过一个 1×1的层,再通过一个 5×5 的层,1×1 的层可能有 16 个通道,而 5×5 的层输出为 28×28×32,共32 个通道,这就是上个视频最后讲到的我们处理的例子。

在这里插入图片描述
为了在这个 3×3 的卷积层中节省运算量,你也可以做相同的操作,这样的话 3×3 的层将会输出 28×28×128。

在这里插入图片描述
或许你还想将其直接通过一个 1×1 的卷积层,这时就不必在后面再跟一个 1×1 的层了,这样的话过程就只有一步,假设这个层的输出是 28×28×64。

在这里插入图片描述
最后是池化层。

在这里插入图片描述
这里我们要做些有趣的事情,为了能在最后将这些输出都连接起来,我们会使用 same类型的 padding 来池化,使得输出的高和宽依然是 28×28,这样才能将它与其他输出连接起来。但注意,如果你进行了最大池化,即便用了 same padding,3×3 的过滤器,stride 为 1,其输出将会是 28×28×192,其通道数或者说深度与这里的输入(通道数)相同。所以看起来它会有很多通道,我们实际要做的就是再加上一个 1×1 的卷积层,去进行我们在 1×1 卷积层的视频里所介绍的操作,将通道的数量缩小,缩小到 28×28×32。也就是使用 32 个维度为1×1×192 的过滤器,所以输出的维度其通道数缩小为 32。这样就避免了最后输出时,池化层占据所有的通道。

在这里插入图片描述
最后,将这些方块全都连接起来。在这过程中,把得到的各个层的通道都加起来,最后得到一个 28×28×256 的输出。通道连接实际就是之前视频中看到过的,把所有方块连接在一起的操作。这就是一个 Inception 模块,而 Inception 网络所做的就是将这些模块都组合到一起。

在这里插入图片描述
这是一张取自 Szegety et al 的论文中关于 Inception 网络的图片,你会发现图中有许多重复的模块,可能整张图看上去很复杂,但如果你只截取其中一个环节(编号 1),就会发现这是在前一页 ppt 中所见的 Inception 模块。

我们深入看看里边的一些细节,这是另一个 Inception 模块(编号 2),这也是一个Inception 模块(编号 3)。这里有一些额外的最大池化层(编号 6)来修改高和宽的维度。这是另外一个 Inception 模块(编号 4),这是另外一个最大池化层(编号 7),它改变了高和宽。而这里又是另一个 Inception 模块(编号 5)。

所以 Inception 网络只是很多这些你学过的模块在不同的位置重复组成的网络,所以如果你理解了之前所学的 Inception 模块,你就也能理解 Inception 网络。

在这里插入图片描述
事实上,如果你读过论文的原文,你就会发现,这里其实还有一些分支,我现在把它们加上去。所以这些分支有什么用呢?在网络的最后几层,通常称为全连接层,在它之后是一个 softmax 层(编号 1)来做出预测,这些分支(编号 2)所做的就是通过隐藏层(编号 3)来做出预测,所以这其实是一个 softmax 输出(编号 2),这(编号 1)也是。这是另一条分支(编号 4),它也包含了一个隐藏层,通过一些全连接层,然后有一个 softmax 来预测,输出结果的标签。

你应该把它看做 Inception 网络的一个细节,它确保了即便是隐藏单元和中间层(编号5)也参与了特征计算,它们也能预测图片的分类。它在 Inception 网络中,起到一种调整的效果,并且能防止网络发生过拟合。

还有这个特别的Inception网络是由Google公司的作者所研发的,它被叫做GoogleLeNet,这个名字是为了向 LeNet 网络致敬。在之前的视频中你应该了解了 LeNet 网络。我觉得这样非常好,因为深度学习研究人员是如此重视协作,深度学习工作者对彼此的工作成果有一种
强烈的敬意。

最后,有个有趣的事实,Inception 网络这个名字又是缘何而来呢?Inception 的论文特地提到了这个模因(meme,网络用语即“梗”),就是“我们需要走的更深”(We need to go deeper),论文还引用了这个网址(http://knowyourmeme.com/memes/we-need-to-go-deeper),
连接到这幅图片上,如果你看过 Inception(盗梦空间)这个电影,你应该能看懂这个由来。作者其实是通过它来表明了建立更深的神经网络的决心,他们正是这样构建了 Inception。我想一般研究论文,通常不会引用网络流行模因(梗),但这里显然很合适。

在这里插入图片描述
最后总结一下,如果你理解了 Inception 模块,你就能理解 Inception 网络,无非是很多个 Inception 模块一环接一环,最后组成了网络。自从 Inception 模块诞生以来,经过研究者们的不断发展,衍生了许多新的版本。所以在你们看一些比较新的 Inception 算法的论文时,会发现人们使用这些新版本的算法效果也一样很好,比如 Inception V2、V3 以及 V4,还有一个版本引入了跳跃连接的方法,有时也会有特别好的效果。但所有的这些变体都建立在同一种基础的思想上,在之前的视频中你就已经学到过,就是把许多 Inception 模块通过某种方式连接到一起。通过这个视频,我想你应该能去阅读和理解这些 Inception 的论文,甚至是一些新版本的论文。

直到现在,你已经了解了许多专用的神经网络结构。在下节视频中,我将会告诉你们如何真正去使用这些算法来构建自己的计算机视觉系统,我们下节视频再见。

2.8 使 用 开 源 的 实 现 方 案 ( Using open-source implementations)

你现在已经学过几个非常有效的神经网络和 ConvNet 架构,在接下来的几段视频中我想与你分享几条如何使用它们的实用性建议,首先从使用开放源码的实现开始。

事实证明很多神经网络复杂细致,因而难以复制,因为一些参数调整的细节问题,例如学习率衰减等等,会影响性能。所以我发现有些时候,甚至在顶尖大学学习 AI 或者深度学习的博士生也很难通过阅读别人的研究论文来复制他人的成果。幸运的是有很多深度学习的研究者都习惯把自己的成果作为开发资源,放在像 GitHub 之类的网站上。当你自己编写代码时,我鼓励你考虑一下将你的代码贡献给开源社区。如果你看到一篇研究论文想应用它的成果,你应该考虑做一件事,我经常做的就是在网络上寻找一个开源的实现。因为你如果能得到作者的实现,通常要比你从头开始实现要快得多,虽然从零开始实现肯定可以是一个很好的锻炼。

如果你已经熟悉如何使用 GitHub,这段视频对你来说可能没什么必要或者没那么重要。但是如果你不习惯从 GitHub 下载开源代码,让我来演示一下。

(整理者注:ResNets 实现的 GitHub 地址 https://github.com/KaimingHe/deep-residualnetworks)

在这里插入图片描述
假设你对残差网络感兴趣,那就让我们搜索 GitHub 上的 ResNets,那么你可以在 GitHub看到很多不同的 ResNet 的实现。我就打开这里的第一个网址,这是一个 ResNets 实现的GitHub 资源库。在很多 GitHub 的网页上往下翻,你会看到一些描述,这个实现的文字说明。这个 GitHub 资源库,实际上是由 ResNet 论文原作者上传的。这些代码,这里有麻省理工学院的许可,你可以点击查看此许可的含义,MIT 许可是比较开放的开源许可之一。我将下载代码,点击这里的链接,它会给你一个 URL,通过这个你可以下载这个代码。

在这里插入图片描述
我点击这里的按钮(Clone or download),将这个 URL 复制到我的剪切板里。
在这里插入图片描述
(整理者注:NG 此处使用的是 linux 系统的 bash 命令行,对于 win10 系统,可以开启linux 子系统功能,然后在 win10 应用商店下载 ubuntu 安装,运行 CMD,输入命令 bash 即可进入 linux 的 bash 命令行)

在这里插入图片描述
接着到这里,接下来你要做的就是输入 git clone,接着粘贴 URL,按下回车,几秒之内就将这个资源库的副本下载到我的本地硬盘里。

让我们进入目录,让我们看一下,比起 Windows,我更习惯用 Mac,不过没关系,让我们试一下,让我们进入 prototxt,我认为这就是存放这些网络文件的地方。让我们看一下这个文件。因为这个文件很长,包含了 ResNet 里 101 层的详细配置。我记得,从这个网页上看到这个特殊实现使用了 Caffe 框架。但如果你想通过其它编程框架来实现这一代码,你也可以尝试寻找一下。

在这里插入图片描述
如果你在开发一个计算机视觉应用,一个常见的工作流程是,先选择一个你喜欢的架构,或许是你在这门课中学习到的,或者是你从朋友那听说的,或者是从文献中看到的,接着寻找一个开源实现,从 GitHub 下载下来,以此基础开始构建。这样做的优点在于,这些网络通常都需要很长的时间来训练,而或许有人已经使用多个 GPU,通过庞大的数据集预先训练了这些网络,这样一来你就可以使用这些网络进行迁移学习,我们将在下一节课讨论这些内容。

当然,如果你是一名计算机视觉研究员,从零来实现这些,那么你的工作流程将会不同,如果你自己构建,那么希望你将工作成果贡献出来,放到开源社区。因为已经有如此多计算机视觉研究者为了实现这些架构做了如此之多的工作,我发现从开源项目上开始是一个更好
的方法,它也确实是一个更快开展新项目的方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2185724.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++容器之list基本使用

目录 前言 一、list的介绍? 二、使用 1.list的构造 2.list iterator的使用 3.list capacity 🥇 empty 🥇size 4.list element access 🥇 front 🥇 back 5.list modifiers 🥇 push_front 🥇 po…

Apache POI 2024/10/2

导入Apache POI的maven坐标 通过POI向Excel文件写入文件内容 package com.sky.test;import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.File; import java.…

在Linux系统安装Nginx

注意:Nginx端口号是80(云服务器要放行) 我的是基于yum源安装 安装yum源(下面这4步就好了) YUM源 1、将源文件备份 cd /etc/yum.repos.d/ && mkdir backup && mv *repo backup/ 2、下载阿里源文件 curl -o /etc/yum.repos.d/CentOS-Base.repo ht…

java OOP基础:类与对象(万字长文)

目录 类与对象 自定义类 对象的内存模型 “”赋值 对象引用:this 作为常量的对象变量:final 判等操作 1. “重写(override)”基类的equals()方法 2. “重载(overload)”equals()方法 对象的构造 有参构造与无…

腾讯云轻量服务器+宝塔面板+基于springboot的web网页部署

经历了一段时间的折磨,近期也在看数据挖掘,还有最优化算法,现在基于我上一篇的的问题上,现在你的情况是不是:本地已经存在一个Springboot的项目,在本地能够良好运行。现在你要做的是把自己的项目部署到网上…

B树、B+树

前言 B树和B树都是平衡的多路搜索树,它们在数据库和文件系统中广泛使用,用于存储和检索数据。B是指balance,也就是平衡的意思。那这俩与平衡二叉树有啥区别?首先要知道AVL树与B树、B树他们都是自平衡搜索树。 ALV的子树间高度不会…

知识图谱入门——4:Protégé 5.6.4安装和主要功能介绍、常用插件(2024年10月2日):知识图谱构建的利器

Protg 是斯坦福大学开发的一款开放源代码的本体编辑工具。它为构建、共享和管理本体(Ontologies)提供了一个强大的平台,广泛应用于语义网、知识管理、自然语言处理等领域,特别是知识图谱的开发和管理。Protg 支持 OWL(…

Android-Handle消息传递和线程通信

本文为作者学习笔记,如有误,请各位大佬指点 目录 一、同步异步 二、Java多线程通信 三、Handler是什么 四、Handler相关的类 五、Handler常用方法 1. 发送消息 2. 接收处理消息 3. 切换线程 六、使用Handler 使用Handler更新UI 使用Handler延…

【MAUI】CommunityToolkit社区工具包介绍

一、为什么需要声明式开发 .NET的MVVM,始于WPF,很古典,它甚至可能是现代前端框架“声明式开发”的鼻祖。声明式开发,之所以出现,是因为命令式开发在UI层和代码层上无法解耦的问题。如下图所示: 1、命令式开发:后台代码需要调用UI层的控件(label.Text),如果更新UI层…

植物病虫害检测数据集 7800张 病虫害 带标注 voc yolo 7类

植物病虫害检测数据集 7800张 病虫害 带标注 voc yolo label| pic_ num| box_ num 越橘: . (932,980) 粘虫: (1104, 1104) 稻苞虫: (1389, 2269) 蝗虫: (1198, 1563) 蝽象若虫: (1594, 2576) . 绿蝽象: (1166&#xf…

微服务nginx解析部署使用全流程

目录 1、nginx介绍 1、简介 2、反向代理 3、负载均衡 2、安装nginx 1、下载nginx 2、解压nginx安装包 3、安装nginx​编辑 1、执行configure命令 2、执行make命令 4、启动nginx 1、查找nginx位置并启动 2、常用命令 3、反向代理 1、介绍反向代理配置 1、基础配置…

渗透测试入门学习——编写python脚本实现对网站登录页面的暴力破解

进入靶场输入任意密码进行尝试 发现登陆失败的特征字:“Username and/or password incorrect” 推荐用谷歌浏览器,按F12继续查看请求地址、请求头参数等详细信息,着重关注是否需要Cookie 编写python脚本 import requests # 填入请求地址 u…

Pikachu-csrf-CSRF(POST)

发起请求 拦截抓包&#xff0c;在请求信息中&#xff0c; Engagement Tool --》generate CSRF PoC 得到以下 html 代码 &#xff0c;生成poc.html 文件&#xff0c;当用户点击 <html><!-- CSRF PoC - generated by Burp Suite Professional --><body><…

C++仿函数的介绍以及priority_queue的介绍和模拟实现

目录 1.仿函数 1.1仿函数的介绍 1.2自定义类型使用仿函数 1.3自定义支持比较大小&#xff0c;但是比较的逻辑不是自己想要的逻辑 2.优先级队列priority_queue 2.1priority_queue的介绍 2.2priority_queue的使用 2.3priority_queue的模拟实现 1.仿函数 1.1仿函数的介绍…

Redis中一些其他的数据类型渐进式遍历

我们之前说了redis中的五个类型 分别是&#xff1a;String List Hash Set ZSet&#xff0c;那除了这五个redis文档中还给我们提供了一些其他的数据类型 &#xff08;一&#xff09;一些其他的数据类型 1.stream 这里的数据类型我们只做简单的一些介绍&#xff0c;如果想了解具体…

C++ | Leetcode C++题解之第452题用最少数量的箭引爆气球

题目&#xff1a; 题解&#xff1a; class Solution { public:int findMinArrowShots(vector<vector<int>>& points) {if (points.empty()) {return 0;}sort(points.begin(), points.end(), [](const vector<int>& u, const vector<int>&…

[云] Hands-on with a sample application--DockerCoins 挖矿程序!

DockerCoins 挖矿程序&#xff01;&#x1f4b0;&#x1f433;&#x1f4e6;&#x1f6a2; 不&#xff0c;你不能用 DockerCoins 买咖啡。 DockerCoins 如何工作&#xff1a; 生成一些随机字节&#xff1a; 程序首先生成一串随机的字节数据。这些随机字节用于模拟挖矿过程中的…

Pytorch实现玉米基因表达量预测模型

一、实验要求 通过搭建残差卷积网络&#xff0c;实现对玉米基因表达量的预测 二、实验目的 理解基因表达量预测问题&#xff1a;基因表达预测是生物信息学和基因组学领域中的重要任务之一&#xff0c;促进学科交叉融合。熟悉深度学习框架PyTorch&#xff1a;通过实现基因表达量…

Golang | Leetcode Golang题解之第453题最小操作次数使数组元素相等

题目&#xff1a; 题解&#xff1a; func minMoves(nums []int) (ans int) {min : nums[0]for _, num : range nums[1:] {if num < min {min num}}for _, num : range nums {ans num - min}return }

nodejs --- 使用全球公认头像gravatar

目录 历史&#xff1a;阿凡达 什么是头像&#xff1f; 我为什么要添加 Gravatar&#xff1f; 我怎样才能得到一个Gravatar&#xff1f; 开发者使用 功能描述 安装和使用 实践应用 我们他们名字旁边的灰色图标是怎么出现的。那么这个灰色图标被称为“神秘人”gravatar。…