当前位置: 首页 > 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 未能正确处理上传模块中输入…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...