当前位置: 首页 > news >正文

卷积神经网络详解

(一)网络结构

一个卷积神经网络里包括5部分——输入层、若干个卷积操作和池化层结合的部分、全局平均池化层、输出层:
● 输入层:将每个像素代表一个特征节点输入进来。
● 卷积操作部分:由多个滤波器组合的卷积层。
● 池化层:将卷积结果降维。
● 全局平均池化层:对生成的feature map取全局平均值。
● 输出层:需要分成几类,相应的就会有几个输出节点。每个输出节点都代表当前样本属于的该类型的概率。
在这里插入图片描述

(二)卷积操作

卷积分为窄卷积、全卷积和同卷积。

(1)步长

步长(stride)表示卷积核在图片上移动的格数.
在这里插入图片描述
● 当步长为1的情况下,如图中,第二行右边的feature map块里的第二个元素3,是由卷积核计算完第一个元素4,右移一格后计算得来的,相当于图片中的前3行和第1到第4列围成的3×3矩阵与卷积核各对应元素进行相乘相加操作(3=1×1+1×0+0×1+1×0+1×1+1×0+0×1+1×0+1×1)。
● 当步长为2的情况下,就代表每次移动2个格,最终会得到一个如图8-5中第二行左边的2×2矩阵块的结果。

(2)窄卷积

窄卷积(valid卷积),从字面上也可以很容易理解,即生成的feature map比原来的原始图片小,它的步长是可变的。假如滑动步长为S,原始图片的维度为N1×N1,那么卷积核的大小为N2×N2,卷积后的图像大小**(N1-N2)/S+1×(N1-N2)/S+1**。

(3)同卷积

同卷积(same卷积),代表的意思是卷积后的图片尺寸与原始图片的尺寸一样大,同卷积的步长是固定的,滑动步长为1。一般操作时都要使用padding技术(外围补一圈0,以确保生成的尺寸不变)。

(4)全卷积

全卷积(full卷积),也叫反卷积,就是把原始图片里的每个像素点都用卷积操作展开。如图示,白色的块是原始图片,浅色的是卷积核,深色的是正在卷积操作的像素点。反卷积操作的过程中,同样需要对原有图片进行padding操作,生成的结果会比原有的图片尺寸大。
在这里插入图片描述

(三)池化层

池化的主要目的是降维,即在保持原有特征的基础上最大限度地将数组的维数变小。池化中只关心滤波器的尺寸,不考虑内部的值。算法是,滤波器映射区域内的像素点取取平均值或最大值。

1.均值池化

就是在图片上对应出滤波器大小的区域,对里面的所有不为0的像素点取均值。这种方法得到的特征数据会对背景信息更敏感一些。注意:一定是不为0的像素点,这个很重要。如果把带0的像素点加上,则会增加分母,从而使整体数据变低。

2.最大池化

最大池化就是在图片上对应出滤波器大小的区域,将里面的所有像素点取最大值。这种方法得到的特征数据会对纹理特征的信息更敏感一些。

3.反向传播

对于最大池化,直接将其误差还原到对应的位置,其他用0填入;对于均值池化,则是将其误差全部填入该像素对应的池化区域。该部分的详细算法也与反池化算法完全相同

(四)卷积神经网络的相关函数

在TensorFlow中,使用tf.nn.conv2d来实现卷积操作,使用tf.nn.max_pool进行最大池化操作。通过传入不同的参数,来实现各种不同类型的卷积与池化操作。

1 卷积函数tf.nn.conv2d

   tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=None, name=None)

● input:指需要做卷积的输入图像,它要求是一个Tensor,具有[batch, in_height,in_width, in_channels]这样的形状(shape),具体含义是“训练时一个batch的图片数量,图片高度,图片宽度,图像通道数”,注意这是一个四维的Tensor,要求类型为float32和float64其中之一。

● filter:相当于CNN中的卷积核,它要求是一个Tensor,具有[filter_height,filter_width, in_channels, out_channels]这样的shape,具体含义是“卷积核的高度,滤波器的宽度,图像通道数,滤波器个数”,要求类型与参数input相同。有一个地方需要注意,第三维in_channels,就是参数input的第四维。

● strides:卷积时在图像每一维的步长,这是一个一维的向量,长度为4。

● padding:定义元素边框与元素内容之间的空间。string类型的量,只能是SAME和VALID其中之一,这个值决定了不同的卷积方式,padding的值为’VALID’时,表示边缘不填充,当其为’SAME’时,表示填充到滤波器可以到达图像边缘。

● use_cudnn_on_gpu:bool类型,是否使用cudnn加速,默认为true

● 返回值:tf.nn.conr2d函数结果返回一个Tensor,这个输出就是常说的feature map。

1.1padding规则介绍

1.padding为VALID情况

    output_width=(in_width-filter_width + 1)/strides_ width(结果向上取整)output_height=(in_height-filter_height+1)/strides_height(结果向上取整)
● 输入的尺寸中高和宽定义成in_height、in_width。
● 卷积核的高和宽定义成filter_height、filter_width。
● 输出的尺寸中高和宽定义成output_height、output_width。
● 步长的高宽方向定义成strides_height、strides_ width。
**2.padding为SAME情况**``out_height = in_height / strides_height(结果向上取整)out_width  = in_width / strides_ width(结果向上取整)

``

2.池化函数tf.nn.max_pool(avg_pool)

tf.nn.max_pool(input, ksize, strides, padding, name=None)
tf.nn.avg_pool(input, ksize, strides, padding, name=None)

● value:需要池化的输入,一般池化层接在卷积层后面,所以输入通常是feature map,依然是[batch, height, width, channels]这样的shape。
● ksize:池化窗口的大小,取一个四维向量,一般是[1, height, width, 1],因为我们不想在batch和channels上做池化,所以这两个维度设为了1。
● strides:和卷积参数含义类似,窗口在每一个维度上滑动的步长,一般也是[1, stride,stride, 1]。
● padding:和卷积参数含义一样,也是取VALID或者SAME, VALID是不padding操作,SAME是padding操作。
● 返回一个Tensor,类型不变,shape仍然是[batch, height, width, channels]这种形式。

相关文章:

卷积神经网络详解

(一)网络结构 一个卷积神经网络里包括5部分——输入层、若干个卷积操作和池化层结合的部分、全局平均池化层、输出层: ● 输入层:将每个像素代表一个特征节点输入进来。 ● 卷积操作部分:由多个滤波器组合的卷积层。 …...

API架构的选择,RESTful、GraphQL还是gRPC

文章目录 一、RESTful1、什么是RESTful?2、RESTful架构的原则3、RESTful的适用场景4、RESTful的优点5、RESTful的缺点 二、GraphQL1、什么是GraphQL?2、GraphQL的原则3、GraphQL的优点4、GraphQL的缺点 三、gRPC1、什么是gRPC2、gRPC的应用场景3、gRPC的…...

人机融合智能的测量、计算与评价

老子在《道德经》第二十一章写道:"道之为物,惟恍惟惚。惚兮恍兮,其中有象;恍兮惚兮,其中有物。窈兮冥兮,其中有精;其精甚真,其中有信。"(“道”这个东西,没有清楚的固定实体。它是那样的恍恍惚惚啊,其中却有形象。它是那样的恍恍惚…...

虹科新品 | 高可靠性、可适用于高磁/压的线性传感器!

PART 1 什么是线性传感器? 基本上,线性传感器是一种用于测量位移和距离的设备,具有高可靠性。测量网格通过光学传感器移动测量数据,数据被光学记录并通过控制器转换为电气数据,而控制器又可以转换为路径。 因此&…...

支付系统设计五:对账系统设计01-总览

文章目录 前言一、对账系统构建二、执行流程三、获取支付渠道数据1.接口形式1.1 后台配置1.2 脚本编写1.2.1 模板1.2.2 解析脚本 2.FTP形式2.1 后台配置2.2 脚本编写2.2.1 模板2.2.2 解析脚本 四、获取支付平台数据五、数据比对1. 比对模型2. 比对器 总结 前言 从《支付系统设…...

阿里三面过了,却无理由挂了,HR反问一句话:为什么不考虑阿里?

进入互联网大厂一般都是“过五关斩六将”,难度堪比西天取经,但当你真正面对这些大厂的面试时,有时候又会被其中的神操作弄的很是蒙圈。 近日,某位测试员发帖称,自己去阿里面试,三面都过了,却被…...

办公智慧化风起云涌,华为MateBook X Pro 2023是最短距离

今年以来,我们几乎每个月,甚至每星期都可以看到大模型应用,在办公场景下推陈出新。 办公智慧化已成必然,大量智力工作正在被自动化。一个普遍共识是:AI能力范围之内的职业岌岌可危,AI 能力范围之外的职业欣…...

分布式项目 09.服务器之间的通信和三个工具类

项目的结构:1.通过Nginx首先把访问首页的请求发送到前端web服务器,2.web服务器会根据请求的url中的一些细节,来把相关的请求发送到相关的服务器中,3.相关的服务器会处理业务,并且返回结果到web服务器中,最后…...

C# 基本语法

C# 基本语法 C# 是一种面向对象的编程语言。在面向对象的程序设计方法中,程序由各种相互交互的对象组成。相同种类的对象通常具有相同的类型,或者说,是在相同的 class 中。 例如,以 Rectangle(矩形)对象为…...

做网络爬虫需要掌握哪些技术?

网络爬虫是指通过代码自动化地访问网页并收集数据的程序,要开发一个成功的爬虫,需要掌握以下技术: 1. HTTP 协议:了解 HTTP 请求和响应的基本内容,以及如何使用 HTTP 请求头和响应头来优化爬虫性能。 2. HTML/CSS/Ja…...

工作利器:三种简单方法将PPT转换成PDF

PDF是一种常用的文件格式,适合数据传输和阅读。在工作中,有时我们需要将PPT文件转换为PDF格式以方便使用。下面是几种将PPT转换为PDF的方法,其中方法二将修改为使用记灵在线工具进行转换。 方法一:直接将文件导出为PPT 一般来说…...

《设计模式》状态模式

《设计模式》状态模式 定义: 状态模式也称为状态机模式,允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。属于行为型模式。 状态模式的角色组成: State(抽象状态类):定义一个接口用来封装与…...

2023年好用的设计图制作软件推荐

说到设计图制作软件,设计师当然最关注核心设计功能,包括预加载模板、图像数据库、界面和基本编辑功能。此外,还要考虑设计图制作软件是否可以协同工作。 1.即时设计 即时设计是一款「专业UI设计工具」,不受平台限制,…...

JavaNote_1.0.2_Spring

Spring框架定义 Spring Framework: Spring 最初的项目,包括六大模块:DAO、ORM、AOP、JEE、WEB、CORE。控制反转和面向切面编程是它的核心功能。 Spring Boot: 一套全新的基础框架,用来快速搭建Spring应用,…...

微服务多模块:Springboot+Security+Redis+Gateway+OpenFeign+Nacos+JWT (附源码)仅需一招,520彻底拿捏你

可能有些人会觉得这篇似曾相识,没错,这篇是由原文章进行二次开发的。 前阵子有些事情,但最近看到评论区说原文章最后实现的是单模块的验证,由于过去太久也懒得验证,所以重新写了一个完整的可以跑得动的一个。 OK&#…...

HNU数据结构与算法分析-作业4-图结构

1. (简答题) 【应用题】11.3 (a)画出所示图的相邻矩阵表示 (b)画出所示图的邻接表表示 (c)如果每一个指针需要4字节,每一项顶点的标号占用2字节,每一条边的权需要2字节&#xff0…...

AMPL IDE语法整理

文章目录 1、参数\集合和变量定义2、目标和约束的书写3、求解命令4、AMPL调用不同求解器的Options目录未完待续~ \qquad 最近再搞一些模型,需要用到AMPL中不同的求解器进行验证求解,故建立本博客,用于随时整理AMPL的相关语法和命令&#xff0…...

从0-1搭建支持gb28181协议搭建流媒体平台

系列文章目录 文章目录 系列文章目录前言一、搭建流程二、运行播放直播流效果: ![在这里插入图片描述](https://img-blog.csdnimg.cn/62b558f0213044f292be69da8cc29730.png)总结前言 一个基于C++开发的国标GB28181流媒体信令服务器。 采用SipServer+ZLMediaKit。可以搭建一个…...

数据结构与算法之栈: Leetcode 682. 棒球比赛 (Typescript版)

棒球比赛 https://leetcode.cn/problems/baseball-game/ 描述 你现在是一场采用特殊赛制棒球比赛的记录员。这场比赛由若干回合组成,过去几回合的得分可能会影响以后几回合的得分。 比赛开始时,记录是空白的。你会得到一个记录操作的字符串列表 ops&a…...

E-office Server_v9.0 漏洞分析

漏洞简介 泛微e-office是一款标准化的协同OA办公软件,实行通用化产品设计,充分贴合企业管理需求,本着简洁易用、高效智能的原则,为企业快速打造移动化、无纸化、数字化的办公平台。由于泛微 E-Office 未能正确处理上传模块中输入…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

ES6从入门到精通:前言

ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

云计算——弹性云计算器(ECS)

弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

Android15默认授权浮窗权限

我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

企业如何增强终端安全?

在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题

分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...