深度学习之卷积神经网络进阶版

news2024/11/18 20:00:09

上一讲我们介绍了卷积神经网络和多层感知机,也就是全链接网络。他们在网络架构上是串行的结构,也就是在每一层与每一层之间,前面一层的输出,是后面一层的输入。

在神经网络里面,我们可能会有更加复杂的结构,比如,在每层之间有分支,甚至说要把每一层 的输出再往前作为输入。

我们来介绍两种比较复杂的神经网络结构:

同时我们要思考,当我们遇见一个比较复杂的结构的时候,我们想要实现它,我们要怎么办?

首先回顾一下上节课的知识:

这种网络结构很类似lenet5。接下来我们来看一下不是串行的网络结构。

第一个网络结构是GoogleNet:

看到这个网络结构,大部分同学就会傻眼,我们要是一个一个对象去定义的话,那我们需要定义好多时间,而且就算写完,代码也会非常的长。

在编程语言里面,我们要尽可能的减少代码的冗余,重复多了容易出错,且不容易维护。
在C语言里面,我们使用函数我们使用函数来减少代码的冗余,在面向对象里面,我们使用类来减少代码的冗余,所以这里面,我们就首先观察有没有相似的结构。

我们注意圈住的部分是一样的。

我们可以将这些部分封装成一个类,然后再将他们串起来。

在GoogleNet里面,我们将每一个块儿,就是我们圈出来的部分,称之为Inception。

接下来我们来看一下,Inception模块是怎么实现的:

这是一个比较典型的例子,其实Inception模块有好多种构造的方式,上图只是其中一种,首先我们要考虑inception模块为什么要构造成这样。
在构造神经网络的时候,有一些超参数是比较难选的,比如说卷积核的大小(面积,长乘宽),GoogleNet的特点是:我们不确定哪一个卷积核比较好用,所以我们在一块儿里面把所有可能好用的卷积核都放进去,所有卷积都用一下,然后将他们的结果挪到一起,将来,那个好用,其对应的权重就比较大,而其他的就比较小,显然,我们提供了几种候选的卷积核的配置,将来在处理的过程中,自然保留最优的。

Concatenate表示把张量拼接到一起。实现如下图:

Average Pooling表示均值池化。

显然,我们经过每条路径处理之后,可能不同的只能是Channel,通道数,WH是不会发生变化的。还是原来的宽度和高度(就算计算出来的不是,对计算结果进行广播即可)。在均值池化过程中,我们可以先对得到的结果(进行池化前)进行padding,即广播过程,例如我们需要对得到的张量进行3*3平均池化处理,我们首先要将得到的张量进行扩维度,使之padding=1,然后进行3*3池化,得到的结果与输入的大小是相同的。

我们要考虑比较多的卷积是1*1的卷积,它表示我们的卷积核就是1*1的,它表示拿我们的权重乘我们的每一个像素(遍历)。得到卷积之后的结果。

显然1*1的卷积核的数量等于输入的通道数量。当然,之后我们还要进行求和:

显然,不管我们输入的通道是多少,其输出一定只是一个通道。这个时候我们就能将输入的所有信息融合到一起了。

信息融合并不难理解,我们在中学阶段就学习过信息融合,我们在高中的时候,经常会有模考,模拟考试,考完之后,学校要评价,模拟考试有很多科目组成,例如是五个科目,那我们的成绩就是五维空间的向量,我们对不同的科目取不同的权重,得到一个综合得分,就叫做信息融合。求总分的过程就是信息融合,我们的总分中包含了我们所有科目的信息。

1*1的卷积的作用是改变通道数量。从C1个通道转化为C2个通道。

其他卷积也可以改变通道数量,为什么我们这么钟爱于1*1的卷积?下图会给你答案:

这样来看,我们将数据进行卷积,得到的结果都是32*28*28的张量,但是后者的运算量只有前者的将近10%。跑起来更快。原来需要十个小时,现在只需要一个小时,很节省成本。(为什么我们不直接使用1*1的卷积将其转化为32*28*28呢?我们需要使用更大面积的卷积来综合更多的信息)。

接下来我们进行拼接:

我们沿着第一个维度进行拼接,第一个维度是通道,注意,这里不再是xyz轴。。。

下面我们来介绍另外一种网络:Residual nets

这个神经网络的思考如果我们将3*3的卷积一直不停的堆下去,我们的效果会不会更好。

对于cifar10进行实验发现,20层的卷积相比于56层的卷积效果要好,无论是训练集还是测试集。
说明我们将网络堆的越来越高并不一定结果会更好,当然可能是过拟合或者其他的一些情况,其中有一种可能叫做梯度消失。

所谓的梯度消失:因为我们做的是反向传播,所以我们需要使用链式法则,将一连串的数据进行相乘。假设我们的每一处的梯度都是小于1的,我们在反向传播的过程中如果不断的乘以小于1的值,那么我们的结果就会越来越趋近于0,当无限趋近于0的时候,那么我们的权重就得不到什么更新。离输入比较近的这些块儿,无法得到充分的训练。也有很多方法提出过解决的方法:

我们可以将第一个隐藏层跨过其他的隐藏层,直接接一个转化为需求(输出)维度的层。然后只对这一个从输入到输出的模型(略过其他层)进行训练,训练之后的结果沿着这个比较短的反向传播路径,能够保留更多损失信息,便于对距离输入层比较近的权重进行更新。然后我们将该隐藏层往后移动一格对下一隐藏层执行相同的方法来逐层训练,解决梯度消失的问题。但是在深度学习里面我们这样来的话会是一个很难的事,因为我们的层数太多了。

所以在Residual net里面提供了这样一个块儿:

在residual里面加一个链接,在很多工作里面我们也称之为跳链接。

注意,我们的第二个relu先不激活,先将更早的输出x与该层的输出相加后再进行激活。

为什么说它能解决梯度消失问题呢?显然我们在向后传播的过程中,第一层反向传播,会在原有梯度的基础上增加一个1:

当原梯度接近于0的情况下,往回传的梯度能接近于1,若干个这样的数相乘我们就能很好的解决梯度消失问题,能对刚开始的那些层进行很好的训练。需要注意的是,第二个权重层输出的结果和x做加法,要求是输出的结果和x的形状是一样的。

residual net(残差网络)永远滴神!

普通神经网络和残差网络的区别。

虚线是指:我们想要输入的x和跳转目的地的形状不一样,我们需要对输入的x进行处理,最简单的处理是我们不做跳链接了,当然我们也可以转化维度之后继续做。(我们可以过一个池化层等)。

总体来看是这样的:

残差块儿我们需要保证输入张量的大小和输出是一样的。

大家看,使用残差网络可以使准确率达到99%:

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

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

相关文章

Pycharm连接云算力远程服务器(AutoDL)训练深度学习模型全过程

前言:在上一篇windows搭建深度学习环境中,我试图使用笔记本联想小新air14的mx350显卡训练一个图像检测的深度学习模型,但是训练时长大概需要几天时间远超我的预期,所以我便选择租用GPU进行训练,在对多家平台对比后找到…

[BT]小迪安全2023学习笔记(第19天:Web开发-.NET项目)

第19天 名词解释 .NET 是一种由Microsoft开发的软件框架,用于构建和运行Windows操作系统上的应用程序。它提供了一个广泛的工具和库集合,支持多种编程语言,包括C#、VB.NET、F#等。.NET的主要目标是提供一种一致的开发平台,使开发…

《HTML 简易速速上手小册》第1章:HTML 入门(2024 最新版)

文章目录 1.1 HTML 简介与历史(😉🌐👽踏上神奇的网页编程之旅)1.1.1 从过去到现在的华丽蜕变1.1.2 市场需求 —— HTML的黄金时代1.1.3 企业中的实际应用 —— 不只是个网页1.1.4 职业前景 —— 未来属于你 1.2 基本 H…

SQL注入:二次注入

SQL注入系列文章: 初识SQL注入-CSDN博客 SQL注入:联合查询的三个绕过技巧-CSDN博客 SQL注入:报错注入-CSDN博客 SQL注入:盲注-CSDN博客 目录 什么是二次注入? 二次注入演示 1、可以注册新用户 2、可以登录->…

数据湖技术之平台建设篇2

数据湖技术之平台建设篇1,主要介绍了湖仓平台建设的前三个主要工作,本次主要继续上次的建设工作介绍,聊一聊一站式湖仓服务平台的相关管理能力建设以及针对小文件的处理。 一. 一站式湖仓服务平台的相关管理能力 主要是将相关能力落地到平台…

day03-今日佳人功能实现

课程说明 首页功能说明系统架构说明实现今日佳人功能实现推荐用户的列表接口增加缓存功能整合前端联调测试 1、首页 在用户登录成功后,就会进入首页,首页中有今日佳人、推荐好友、探花、搜附近等功能。 2、系统架构 在开发完SSO系统中的登录功能后&…

【Spring实战】31 Spring Boot3 集成 Gateway 微服务网关

文章目录 1. 定义2. 功能3. 示例代码1) 创建一个业务服务2)创建一个网关服务3)启动服务4)验证 4. 代码参考结语 1. 定义 Spring Cloud Gateway 是一个基于 Spring Framework 的开源网关服务,用于构建微服务架构中的 API 网关。它…

SpringCloud LoadBalancer

SpringCloud LoadBalancer 1.什么是LoadBalancer LoadBalancer(负载均衡器)是一种网络设备或软件机制,用于分发传入的网络流量负载请求到多个后端目标服务器上,从而实现系统资源的均衡利用和提高系统的可用性和性能。 负载均衡器…

前端工程化之:webpack1-7(入口和出口)

前置知识 node 环境下 "./" 代表的意思: 模块化代码中,比如 require("./") ,表示当前 js 文件所在的目录。在路径处理中, "./" 表示 node 运行目录。__dirname:所有情况下,…

Python tkinter (8) ——Spinbox控件

Python的标准Tk GUI工具包的接口 tkinter系列文章 python tkinter窗口简单实现 Python tkinter (1) —— Label标签 Python tkinter (2) —— Button标签 Python tkinter (3) —— Entry标签 Python tkinter (4) —— Text控件 Python tkinter (5) 选项按钮与复选框 Pyt…

数据结构【图的遍历】

数据结构之图 图的类型定义和存储结构图的遍历遍历的定义图的特点图常用的遍历深度优先搜索 DFS(DepthFirstSearch)算法实现算法效率分析 广度优先搜索 BFS(BreadthFirstSearch)算法实现算法效率分析 DFS与BFS算法效率比较 图的类…

iOS_Xcode_LLDB调试常用命令

文章目录 结构常用命令:1、流程控制:2、常用命令3、进程信息:4、寄存器:register5、镜像:image6、内存:memory7、符号断点:breakpoint8、内存断点:watchpoint9、Tips: 结…

【HarmonyOS应用开发】开发介绍 DevEco Studio安装与使用(一)

内容比较长,干货满满,全是实战操作内容,希望耐心观看,如果对你有所帮助,请点个赞! 官方文档:https://developer.huawei.com/consumer/cn/training/course/slightMooc/C101667303102887820 访…

华为OD-华为机试精讲500篇系列文章目录介绍(持续补充ing)

目录 背景介绍 什么是华为OD? OD现状 OD趋势 华为OD机考刷题攻略 1、刷题资料:投递岗位通过筛选后提供 2、注意事项: 真题代码目录 背景介绍 经济下行的这几年,每个人都感同身受,如何让自己在芸芸众生中脱颖而…

ubuntu中的rsyslog

目录 1. rsyslog简介 2. 查看/var/log 3. syslog的配置文件 3.1 /etc/rsyslog.d/50-default.conf 3.2 /etc/rsyslog.conf 4. 如何写入syslog 4.1 C语言 4.2 shell 4.3 内核输出 5. syslog.1和syslog.2.gz等文件是如何生成 6. logrotate是如何被执行 7. 如何限制sys…

linux 运行vue项目

1:在本地电脑 项目跟目录 执行 npm run build 在根目录生成文件夹 dist 2:复制dist 到linux 上 /usr/vuespace/ledger-web/dist 3: 配置nginx server {listen 443 ssl;server_name tz.i569.cn; #填写绑定证书的域名ssl_certificate /etc/nginx/myconf…

蓝桥杯备战——8.DS1302时钟芯片

1.分析原理图 由上图可以看到,芯片的时钟引脚SCK接到了P17,数据输出输入引脚IO接到P23,复位引脚RST接到P13。 2.查阅DS1302芯片手册 具体细节还需自行翻阅手册,我只截出重点部分 总结:数据在上升沿写出,下降沿读入,…

赚钱的雏形,是跑通最小闭环!

没赚钱本事,就专心打磨武器! 很多人有一个错误的认知,就是做项目一定是新的,一定是有创新在里面,但其实赚钱的开始,一定是复制现有的项目。 现有的项目,可以确保他有市场,能够跑通&a…

Ps:段落面板

Ps菜单:窗口/段落 Window/Paragraph Ps菜单:文字/面板/段落面板 Type/Panels/Paragraph Panel 对于“点文本”,默认一行为一个段落。每按一次回车键,就多出一个段落。 对于“段落文本”,一段可能有多行,具体…

【Vite+Vue3+TS】基于Vite+Vue3+TypeScript+ESLint+Prettier+Stylelint搭建项目(亲测超详细)

目 录 项目搭建步骤确定node版本使用Vite创建Vue3项目规范目录结构配置环境修改Vite配置文件集成路由工具Vue Router集成状态管理工具Pinia集成CSS预编译器Sassvite-plugin-svg-icons图标组件集成UI框架Element Plus集成HTTP 请求工具 Axios 项目代码规范集成ESLint配置集成Pre…