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

目录

  • 第四门课 卷积神经网络(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.mzph.cn/diannao/55788.shtml

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

相关文章

75. 颜色分类

思路 先排最小的数,将最小的数都放至列表前面 则0~r-1都是最小值 从r到len(nums)-1继续进行排序,从尾部开始,将最大值放置尾部 class Solution(object):def sortColors(self, nums):""":type nums: List[int]:rtype: None …

Python | Leetcode Python题解之第468题验证IP地址

题目: 题解: class Solution:def validIPAddress(self, queryIP: str) -> str:if queryIP.find(".") ! -1:# IPv4last -1for i in range(4):cur (len(queryIP) if i 3 else queryIP.find(".", last 1))if cur -1:return &q…

Window系统编程 - 文件操作

前言 各位师傅大家好,我是qmx_07,今天主要介绍使用windows系统编程操作读写文件 文件 CreateFile()函数讲解 介绍:该函数用于打开文件或者I/O流设备,文件、文件流、目录、物理磁盘、卷、控制台缓冲区、磁带驱动器、通信资源、mailslot 和…

Jenkins Pipline流水线

提到 CI 工具,首先想到的就是“CI 界”的大佬--]enkjns,虽然在云原生爆发的年代,蹦出来了很多云原生的 CI 工具,但是都不足以撼动 Jenkins 的地位。在企业中对于持续集成、持续部署的需求非常多,并且也会经常有-些比较复杂的需求,此时新生的 CI 工具不足以支撑这些很…

看门狗电路设计

看门狗电路设计 看门狗是什么应用架构图TPV6823芯片功能硬件时序图为什么要一般是要保持200个毫秒左右的这种低电平的时间看门狗电路实际应用与条件 看门狗是什么 硬件看门狗芯片,Watch DogTimer,可用于受到电气噪音、电源故障、静电放电等影响(造成软件…

LSTM(长短时记忆网络)

一、引言 在处理序列数据时,循环神经网络(RNN)虽然能够处理序列数据并保留历史信息,但在实践中发现它对于捕捉长时间依赖关系的能力有限,尤其是在训练过程中容易遇到梯度消失或梯度爆炸的问题。为了解决这些问题&…

Nginx基础详解5(nginx集群、四七层的负载均衡、Jmeter工具的使用、实验验证集群的性能与单节点的性能)

续Nginx基础详解4(location模块、nginx跨域问题的解决、nginx防盗链的设计原理及应用、nginx模块化解剖)-CSDN博客 目录 14.nginx集群(前传) 14.1如何理解单节点和集群的概念 14.2单节点和集群的比较 14.3Nginx中的负载均衡…

QT入门教程攻略 QT入门游戏设计:贪吃蛇实现 QT全攻略心得总结

Qt游戏设计:贪吃蛇 游戏简介 贪吃蛇是一款经典的休闲益智类游戏,玩家通过控制蛇的移动来吃掉地图上的食物,使蛇的身体变长。随着游戏的进行,蛇的移动速度会逐渐加快,难度也随之增加。当蛇撞到墙壁或自己的身体时&…

Laravel Filament 如何配置多语言支持

演示 一、安装拓展包outerweb/filament-translatable-fields composer require outerweb/filament-translatable-fields配置模型 该套件包含一个名为 HasTranslations 的特性,用于使 Eloquent 模型具备多语言功能。翻译值以 JSON 格式存储,并不需要额外…

Run the FPGA VI 选项的作用

Run the FPGA VI 选项的作用是决定当主机 VI 运行时,FPGA VI 是否会自动运行。 具体作用: 勾选 “Run the FPGA VI”: 当主机 VI 执行时,如果 FPGA VI 没有正在运行,系统将自动启动并运行该 FPGA VI。 这可以确保 FPG…

夜间数据库IO负载飙升?MySQL批量删除操作引发的问题排查

目录 问题现象 问题分析 修改建议 总结 问题现象 近日,某用户反馈他们的MySQL数据库实例在凌晨时段会频繁出现IO负载急剧上升的情况,这种状态会持续一段时间,随后自行恢复正常。为了查明原因,该用户通过DBdoctor工具收集了相…

第十三章 Redis短信登录实战(基于Redis)

目录 一、概述 1.1. Session复制 1.2. 使用Redis 二、基于Redis实现共享Session登录 2.1. 实现思路 2.2. 功能实现的主要代码 2.2.1. 用户业务接口 2.2.2. 用户业务接口实现类 2.2.3. 用户控制层 2.2.4. 登录拦截器 2.2.5. 拦截器配置类 2.3. 优化登录拦截器 完…

电池大师 2.3.9 | 专业电池管理,延长寿命优化性能

Battery Guru 显示电池使用情况信息,测量电池容量(mAh),并通过有用技巧帮助用户改变充电习惯,延长电池寿命。支持显示电池健康状况,优化电池性能。 大小:9.6M 百度网盘:https://pan…

26.删除有序数组中的重复项

题目::26. 删除有序数组中的重复项 - 力扣&#xff08;LeetCode&#xff09; 思路:只要不和前面的数一样就可以移动指针&#xff0c;进行赋值 代码: class Solution { public:int removeDuplicates(vector<int>& nums) {int slow 0 ;for(int fast 1; fast < …

髓质脊髓三叉神经核文献阅读笔记

文献阅读 1.RNA-seq 对于大量RNA测序&#xff0c;收集第30天的类器官。使用FastPure细胞/组织总RNA分离试剂盒根据制造商的方案提取总RNA。采用Nanodrop 2000分光光度计测定RNA浓度和纯度。使用Agilent 2100生物分析仪和2100 RNA纳米6000检测试剂盒评估RNA样品的完整性。简单…

选型工单管理系统,从原理到应用全面解读

工单管理系统提升客户支持效率&#xff0c;优化内部协作&#xff0c;强化数据分析。选型需明确需求&#xff0c;比较系统功能和特性&#xff0c;评估试用后选择最适合的系统。ZohoDesk凭其多渠道支持、智能分配、自动化工具、协作工具和数据分析能力&#xff0c;成为企业优选。…

Redis篇(缓存机制 - 基本介绍)(持续更新迭代)

目录 一、缓存介绍 二、经典三缓存问题 1. 缓存穿透 1.1. 简介 1.2. 解决方案 1.3. 总结 2. 缓存雪崩 2.1. 简介 2.2. 解决方案 2.3. 总结 3. 缓存击穿 3.1. 简介 3.2. 解决方案 3.3. 总结 4. 经典三缓存问题出现的根本原因 三、常见双缓存方案 1. 缓存预热 1…

MySQL进阶 - 索引

01 索引概述 【1】概念&#xff1a;索引就是一种有序的数据结构&#xff0c;可用于高效查询数据。在数据库表中除了要保存原始数据外&#xff0c;数据库还需要去维护索引这种数据结构&#xff0c;通过这种数据结构来指向原始数据&#xff0c;这样就可以根据这些数据结构实现高…

一个月学会Java 第8天 方法与递归

Day8 方法与递归 方法这个东西我们之前讲过&#xff0c;但是只是讲了原理并没有详细的讲解东西&#xff0c;还有构造器这个东西&#xff0c;也只是介绍过全貌&#xff0c;构造器其实就是一个特殊的方法&#xff0c;但是由于特殊&#xff0c;所以我们之后再讲&#xff0c;还有一…

yolov8/9/10/11模型在中医舌苔分类识别中的应用【代码+数据集+python环境+GUI系统】

yolov8、9、10、11模型在中医舌苔分类识别中的应用【代码数据集python环境GUI系统】 背景意义 目前随着人们生活水平的不断提高&#xff0c;对于中医主张的理念越来越认可&#xff0c;对中医的需求也越来越多。 传统中医的舌诊主要依赖于医生的肉眼观察&#xff0c;仅仅通过这…