神经网络整体架构
文章目录
- 1.输入层Input
- 2.卷积层Conv
- 3.激活函数层
- (一)Sigmoid 函数
- (二)Tanh 函数
- (三)修正线性单元ReLU
- (四)Leaky ReLU函数(带泄露的Relu)
- (五)参数化ReLU
- 4.池化层POOL
- 5.全连接层FC
- 6.输出层Output
用全连接神经网络处理大尺寸图像具有三个明显的缺点:
①将图像展开为向量会丢失临近像素的空间信息
②模型参数过多,因此效率低下,训练困难
③大量参数也很块会导致网络过拟合
针对这些问题,提出了卷积神经网络,很好的解决了这些问题。
目的:减少网络参数数量,达到更好效果

1.输入层Input
图像数据
2.卷积层Conv
提取特征(将图像分成一个个小区域,利用卷积核生成对应的特征图)
卷积运算的目的是提取输入的不同特征,某些卷积层可能只能提取一些低级的特征如边缘、线条和角等层级,更多层的网络能从低级特征中迭代提取更复杂的特征。
可以看出卷积是一种局部操作,通过一定大小的卷积核作用于局部图像区域获得图像的局部信息。
5×5的数据经过3×3的卷积核生成3×3的特征图
卷积核:
· 例
第一个区域特征值:
(1)多通道卷积
当有多个通道channel时,例如图片可以有RGB三个通道,卷积核需要拥有相同的channel数,每个卷积核channel与输入层的对应channel进行卷积,将每个channel的卷积结果相加得到最终的feature map。
(2)多卷积核
当有多个卷积核时,可以学习到多种不同的特征,对应产生多个channel的feature map。多个功能的卷积核得计算结果放在一起,能够检测到图片中不同得特征(边缘检测)
一个卷积层中可以有多个不同的卷积核,而每一个卷积核都对应一个特征图。
多通道卷积 | 多卷积核 |
---|---|
卷积核channel数是确定的前面是3×3×3,则卷积核的channel必须是3,每一个卷积核的通道数量必须要与输入通道数量保持一致 | 卷积核的个数不是确定的 |
卷积核每个channel生成的不是独立的,需要相加并加上偏置量b,这里卷积输出结果只有1个,因为卷积核只有1个。 | 每个卷积核生成的feature map是独立的,不需要相加,设置几个卷积核就产生几个feature map,这里输出结果有4个feature map,因为传入了3×3×3×4 |
3.激活函数层
激活函数是用来加入非线性。常见的激活函数有sigmod、tanh、relu,前两者常用在全连接层,relu常见于卷积层。
问题:为什么要在卷积层后面添加激活函数?
如果只有线性变换,那无论多少层神经元,都能简化成一层神经元,那神经网络只是简单多元线性回归而已,不能拟合更加复杂的函数。举个例子,如果我们只有线性操作,那么我们的神经网络永远无法拟合圆等复杂的曲线图形,永远只能表示超平面,无法表示曲面等。
因为卷积对输入图像进行的操作是线性的,但输入的图像的信息不都是线性可分的,所以通过激活函数来进行非线性操作,能够更好的映射特征去除数据中的冗余,以增强卷积神经网络的表达能力。
问题:激活函数为什么要使用非线性的?
使用线性激活函数和不适用激活函数、直接使用logistic回归没有区别,那么无论神经网络有多少层,输出都是输入的线性组合,与没有隐藏层的效果相当,就成了最原始的感知器了。
作用:
①将神经网络非线性化,即提升神经网络的拟合能力,能拟合更复杂的函数。
②激活函数可以引入非线性因素。如果不使用激活函数,则输出信号仅是一个简单的线性函数。线性函数一个一级多项式,线性方程的复杂度有限,从数据中学习复杂函数映射的能力很小。没有激活函数,神经网络将无法学习和模拟其他复杂类型的数据,例如图像视频、音频、语音等。
③激活函数可以把当前特征空间通过一定的线性映射转换到另一个空间,让数据能够更好的被分类。
添加激活层:
(一)Sigmoid 函数
sigmoid 函数公式如上式所示,函数图像如图所示。该函数能够把变量映射到[0,1]区间,所以一般是用来处理二分类的问题。
观察还能发现在 sigmoid函数两端,对于大于5或小于-5的值无论多大或多小都会压缩到0或1。如此便带来一个严重问题,即梯度的“饱和效应”。
对照sigmoid函数的梯度图,大于5或小于-5部分的梯度接近0,这会导致在误差反向传播过程中导数处于该区域的误差将很难甚至根本无法传递至前层, 进而导致整个网络无法训练(导数为0将无法更新网络参数)。
此外,在参数初始化的时候还需特别注意,要避免初始化参数直接将输出值域带入这一区域:一种可能的情形是当初始化参数w过大时,将直接引发梯度饱和效应而无法训练。
解决办法:初始化参数w设置小点,这样生成的x值就会少,对应的斜率即梯度就会大更新参数就会快。
(二)Tanh 函数
tanh 函数公式如上所示,tanh 函数图像如图 2.17 所示,是将变量映射到[-1,1]区间。
tanh函数存在和sigmoid函数一样的缺点:当x趋近无穷大或无穷小,导数的梯度(即函数的斜率)就趋近于0,这使得梯度算法的速度会减慢。
(三)修正线性单元ReLU
因为 sigmoid 和 tanh 函数在反向传播中常常因为值过小而造成梯度消失,ReLU 函数能够避免部分这个问题,ReLU 是修正线性单元(Rectified Linear Unit),ReLU 函数的表达式如下式所示:
从图中可以看出 ReLU 函数不是连续的,属于分段函数:当x<0时, f(x)值为0,当x≥0 时, f(x)等于x,x≥0部分完全消除了sigmoid型函数的梯度饱和效应,因此不会出现梯度消失的情况。
与sigmoid、tanh 激活函数相比,ReLU 函数当输入小于0时梯度等于0,这时神经元不会被激活,所以在某一段时间里只有部分神经元会被激活,在反向传播过程中收敛速度会更快。
优点:
①ReLU激活函数计算量更小
②收敛速度远快于sigmoid和tanh;
③解决部分梯度消失问题
ReLU的梯度大多数情况下是常数,有助于解决深层网络的收敛问题
④因为ReLU不会梯度消失只有线性关系,会让网络训练更快;
缺点:
①强制性把负值置为0,可能丢掉一些特征;
②当输入为负数时,权重无法更新,导致神经元死亡(学习率不要太大)
(四)Leaky ReLU函数(带泄露的Relu)
为了缓解“死区”现象,研究者将ReLU函数中x<0的部分调整为,其中为0.01或0.001数量级的较小正数。这种新型的激活函数被称作Leaky ReLU:
可以发现,原始ReLU函数实际上是Leaky ReLU函数的一个特例,即.
不过由于Leaky ReLU函数中为超参数,合适的值较难设定且较为敏感,因此Leaky ReLU函数在实际使用中的性能并不十分稳定。
(五)参数化ReLU
参数化ReLU的提出很好的解决了Leaky ReLU函数中超参数不易设定的问题:参数ReLU直接将也作为一个网络中可学习的变量融入模型的整体训 练过程。
注:Leaky ReLU中的α需经人为指定,而参数化ReLU中α则经网络学习得到。
4.池化层POOL
池化(特征压缩/下采样)是将输入图像进行缩小,减少像素信息,只保留重要信息,主要是为了减少计算量。主要包括最大池化和均值池化。
作用:
①减少网络中的参数计算量,从而遏制过拟合;
②增强网络对输入图像中的小变形、扭曲、平移的鲁棒性(输入里的微小扭曲不会改变池化输出——因为我们在局部邻域已经取了最大值/平均值)。
③帮助我们获得不因尺寸而改变的等效图片表征。这非常有用,因为这样我们就可以探测到图片里的物体,不管它在哪个位置。
特征:
①没有要学习的参数
池化层和卷积层不同,没有要学习的参数。池化是从目标区域中取最大值(或平均值),所以不要学习的参数。
②通道数不发生变化
经过池化运算,输入数据和输出数据的通道数不会发生变化。
③对微小的位置变化具有鲁棒性
输入数据发生微小偏差时,池化仍会返回相同的结果。因此,池化对输入数据的微小偏差具有鲁棒性。比如,3X3的池化的情况下,如下图,池化会吸收输入数据的偏差(根据数据不同,结果可能不一致)。
从上图看,池化只是变长和宽,而特征图的个数其实不会变。
最大池化MAX POOLING(选取最大的特征值)
(1)目的:抓住主要矛盾,忽略次要因素。
(2)意义:降低数据维度,减少训练参数,避免过拟合。
通用池化层过滤器:f=2×2,s=2
注:池化层没有涉及到任何的矩阵计算,只是一个筛选、压缩、过滤的过程。
5.全连接层FC
全连接层在整个卷积神经网络中起分类器的作用,在全连接层之前需要将之前的输出feature map展平;再接一个或多个全连接层,进行模型学习。
全连接层相当于一个普通神经网络。
如果说卷积层、汇合层和激活函数层等操作是将原始数据映射到隐层特征空间的话,全连接层则起到将学到的特征表示映射到样本的标记空间的作用。
在实际使用中,全连接层可由卷积操作实现:对前层是全连接的全连接层可以转化为卷积核为1×1的卷积;而前层是卷积层的全连接层可以转化为卷积核为h×w的全局卷积,h和w分别为前层卷积输出结果的高和宽。
· 例1
以经典的VGG-16网络模型为例,对于224×224×3的图像输入,最后一层卷积层(指VGG-16的Pool5)可得输出为7×7×512的特征张量,若后层是一层含4096个神经元的全连接层时,则可用卷积核为7×7×512×4096的全局卷积来实现这一全连接运算过程。
其中该卷积核具体参数如下,经过此卷积操作后可得1×1×4096的输出。
如需再次叠加一个含2048个神经元的全连接层,可设定以下参数的卷积层操作:
· 例2
全连接层FC前面一层结果是32×32×10,那么全连接层的矩阵第一个参数是32×32×10=10240,第二个参数取决于最终要分成几类,上图分成5类即第二个参数是5,那么矩阵是[10240,5]。
6.输出层Output
分类 | 回归 |
---|---|
采用Softmax函数 | 采用线性函数 |
![]() | |
![]() |
相关文章:

神经网络整体架构
文章目录 1.输入层Input2.卷积层Conv3.激活函数层(一)Sigmoid 函数(二)Tanh 函数(三)修正线性单元ReLU(四)Leaky ReLU函数(带泄露的Relu)(五)参数化ReLU 4.池化层POOL5.全连接层FC6.输出层Output 用全连接神经网络处理大尺寸图像具有三个明显的缺点: ①将图像展开为…...

山西农业大学20241010
02-JAVASCRIPT 一.JS基础语法1. 数据类型转换1.1 隐式转换1.2 强制转换 2. 运算符 二.JS语句1. 条件语句2. 循环语句 三.函数(方法)1. 声明函数的第一种方法2. 声明函数的第二种方法3. 声明函数的第三种方法 四.对象1. 对象的创建 -- 字面量2. 访问对象的属性3. 内置构造函数以…...

小北的技术博客:探索华为昇腾CANN训练营与AI技术创新——Ascend C算子开发能力认证考试(中级)
前言 哈喽哈喽,这里是zyll~,北浊.(大家可以亲切的呼唤我叫小北)智慧龙阁的创始人,一个在大数据和全站领域不断深耕的技术创作者。今天,我想和大家分享一些关于华为昇腾CANN训练营以及AI技术创新的最新资讯和实践经验~(初级证书还没拿到的小伙伴,可以先参考小北的这篇技术…...

Docker极速入门一文通
文章目录 Docker极速入门一文通Docker命令搜索镜像docker search拉取镜像|下载镜像docker pull查看镜像docker images删除镜像docker rmi运行容器docker run查看容器 docker ps删除容器 docker rm后台启动容器 docker run -d进入容器 docker exec拷贝文件到容器 docker cp拷贝容…...

Unity网络开发基础 —— 实践小项目
概述 接Unity网络开发基础 导入基础知识中的代码 需求分析 手动写Handler类 手动书写消息池 using GamePlayer; using System; using System.Collections; using System.Collections.Generic; using UnityEngine;/// <summary> /// 消息池中 主要是用于 注册 ID和消息类…...

四、Spring Boot集成Spring Security之认证流程
Spring Boot集成Spring Security之认证流程 一、概要说明二、基于内存的用户名密码1、默认用户名密码2、自定义用户名密码3、为方便测试添加测试接口TestController 三、登录登出重要概念介绍四、登录业务逻辑1、登录业务相关过滤器2、访问业务请求处理流程①、访问业务请求地址…...

Chromium 中chrome.bookmarks扩展接口c++实现
一、扩展接口定义 chrome.bookmarks 使用 chrome.bookmarks API 创建、整理以及以其他方式操纵书签。另请参阅覆盖网页(可用于创建自定义“书签管理器”页面)。 更多参考chrome.bookmarks | API | Chrome for Developers (google.cn) 扩展可以请从…...

编程思想:编程范式:响应式编程
文章目录 概述实现的设计模式举例总结概述 响应 响应一般指对于事件的响应,事件包括数据变化或其他事件 响应流程包括事件的发生,事件的传递,和事件的最终处理 事件在起点处发生,开始传递过程 传递过程,包括对事件的一系列处理,如事件封装的数据的类型转化,数据集合…...

Leetcode 颜色分类
这个算法采用了荷兰国旗问题(Dutch National Flag Problem)的解法思想,用三个指针将数组中的元素分为三个区域,并且对这些区域进行动态调整,达到排序的目的。 算法思想: 三个指针: low 指针表示…...

ssh连接阿里云长连接
如何让ssh保持连接? 有时候用ssh连接阿里云莫名奇妙断开了。怎么样才能保持连接呢? 修改系统的链接参数: (1)修改/etc/ssh/sshd_config文件,找到 ClientAliveInterval 0和ClientAliveCountMax 3并将注释符号&#x…...

栈的C实现
栈的C实现 栈简介栈的C实现1.栈结构体2.初始化栈3.栈的基本操作 栈简介 栈(Stack)是一种后进先出的数据结构,类似于一个垂直的容器。 栈的特点是后进先出,即最后入栈的元素最先出栈。栈可以用来解决递归问题、实现函数调用、以及…...

【MySQL】入门篇—数据库基础:关系数据库概念
一、背景与重要性 在当今数字化时代,数据的管理和存储变得尤为重要。无论是企业的客户信息、产品数据,还是社交媒体上的用户互动,数据都是推动业务和决策的核心。 关系数据库管理系统(RDBMS)是一种广泛使用的数据管理…...

不到千元的自动猫砂盆是智商税吗?这四大选购技巧不看就亏大了
虽然现在的人都说,猫砂盆等上班一天回来再清理也没有任何关系,但实际上在这一天里,猫咪的粪便已经在猫砂盆里滋生了很多无法察觉的细菌,久而久之就会影响猫咪的健康,导致尿闭,放了一天的便便臭味也让人无法…...

【图论】(二)图论基础与路径问题
图论基础与路径问题 图的构造邻接矩阵邻接表 所有可达路径邻接矩阵存储邻接表存储 字符串接龙有向图的完全可达性 图的构造 这里仅对图论路径问题中图的构造做整理总结归纳,具体详细相关概念请参考代码随想录上的整理总结: 图论理论基础深度优先搜索理…...

Git常用命令(持续更新中)
mkdir one 在当前目录下创建一个名为one的文件夹 cd one 进入one 文件夹 git init 初始化git 仓库 touch README.md 创建一个后缀为.md的新文件README.md git add README.md 将README.md添加到git暂存区 git add * . * 将所有文件添加到暂存区 git add "E:/t…...

什么是PLM系统?PLM系统对制造业起到哪些作用?三品PLM系统对汽车制造业意义
在当今竞争激烈的制造业环境中,企业面临着来自市场、技术、客户需求等多方面的挑战。为了应对这些挑战,许多制造企业纷纷引入产品生命周期管理PLM系统,以实现更高效、更灵活的产品全生命周期管理。PLM系统以其独特的优势,在优化产…...

Pr 视频效果:元数据和时间码刻录
视频效果/视频/元数据和时间码刻录 Video/Metadata & Timecode Burn-in 元数据和时间码刻录 Metadata & Timecode Burn-in效果是一种在视频画面上叠加显示剪辑元数据或时间码的工具。它允许在导出视频时,将需用的元数据信息直接刻录在画面上,方便…...

前端MD5加密
1.导入包 npm install --save ts-md5 2.使用方式 import { Md5 } from ts-md5;//md5加密后的密码 const md5PwdMd5.hashStr("123456").toUpperCase(); 3. Vue解析token中携带的数据 3.1 安装插件 npm install jwt-decode --save 3.2 引入 import {jwtDecode} fro…...

仿IOS桌面悬浮球(支持拖拽、自动吸附、自动改变透明度与点击、兼容PC端与移动端)
使用 pointerdown/pointermove/pointerup 实现仿IOS桌面悬浮球效果,支持拖拽、指定拖拽选对容器,指定拖拽安全区、自动吸附、自动改变透明度与点击,兼容PC端与移动端。 效果展示 https://code.juejin.cn/pen/7423757568268304421 代码实现 …...

智谱开放平台API调用解析
一、什么是智谱AI 智谱AI成立于2019年,由清华大学计算机系知识工程实验室的技术成果转化而来,是一家致力于人工智能技术研发和应用的公司。智谱致力于打造新一代认知智能大模型,专注于做大模型的中国创新。 二、智谱开放平台API调用 官方文…...

Linux中定时删除10天前的日志文件
例如:删除/data/log/目录下所有10天前的.log文件 find /data/log/ -type f -name "*.log" -mtime 10 -exec rm -f {} \;只查看要删除的文件有哪些,不真正删除文件 logfiles$(find /data/log/ -type f -name "*.log" -mtime 10) ec…...

贝壳Android面试题及参考答案
详细说Final关键字 在编程语言中,final关键字具有重要的作用。以下为你详细介绍final关键字: 一、final关键字的主要作用 修饰变量 当final修饰基本数据类型变量时,该变量的值一旦被初始化就不能再被改变。例如:final int num = 10;num = 20; // 这会导致编译错误当final修…...

基于vue的酒店预订管理系统(源码+定制+开发)
博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…...

FreeRTOS——TCB任务控制块、任务句柄、任务栈详解
任务控制块结构体 任务控制块是 FreeRTOS 中用于描述和管理任务的数据结构,包含了任务的状态、优先级、堆栈等信息。 TCB_t的全称为Task Control Block,也就是任务控制块,这个结构体包含了一个任务所有的信息,它的定义以及相关变…...

【STM32单片机_(HAL库)】4-5-2【定时器TIM】【感应开关盖垃圾桶项目】HC-SR04超声波模块实验
1.硬件 STM32单片机最小系统HC-SR04超声波模块 2.软件 hcsr04驱动文件添加main.c程序 #include "sys.h" #include "delay.h" #include "led.h" #include "uart1.h" #include "hcsr04.h"int main(void) {HAL_Init(); …...

安全网络架构
网络安全解决方案是指通过一系列技术和措施来保护网络系统和数据的安全。它涉及多个方面,包括网络设备的防护、数据的加密和备份、安全策略的制定和执行等。以下是一些常见的网络安全解决方案: 防火墙:防火墙是一种硬件或软件设备,…...

【万字长文】Word2Vec计算详解(二)Skip-gram模型
【万字长文】Word2Vec计算详解(二)Skip-gram模型 写在前面 本篇介绍Word2Vec中的第二个模型Skip-gram模型 【万字长文】Word2Vec计算详解(一)CBOW模型 markdown行 9000 【万字长文】Word2Vec计算详解(二)S…...

随机掉落的项目足迹:解决TypeError: Cannot read properties of undefined (reading ‘push‘)报错
问题引入 下面是request.js中请求拦截器相关的代码 但是运行时却出现了报错 问题解决 useRouter() 是 Vue Router 提供的组合式 API,它只能在 Vue 组件的 setup() 函数中有效。如果在其他地方(例如 Axios 的拦截器中)调用它,可…...

ChatTTS 本地安装和测试
Ubuntu 22服务器,3.9/3.10都可以,但是 3.11不可以 sudo apt install python3.10 apt install python3.10 python3.10-dev #ubuntu 22 安装python3.10对应的pip3.10 # 下载 get-pip.py curl -sS https://bootstrap.pypa.io/get-pip.py -o get-pip.py # 使…...

[Leetcode] 560 Subarray Sum Equals K
题意:给定一个数组求连续的子数组的和为k的有几个 Input: nums [1,1,1], k 2 Output: 2 https://leetcode.com/problems/subarray-sum-equals-k/description/ 首先思考1.因为是subarray sum前缀和很容易想到,那问题就转化成preSum[i] preSum[j] - k…...