CNN卷积神经网络到底卷了啥?

news2025/7/26 8:11:16

参考视频:卷积神经网络(CNN)到底卷了啥?8分钟带你快速了解!


我们知道:
图片是由像素点构成,即最终的成像效果是由背后像素的颜色数值所决定
在Excel中:有这样一个由数值0和1组成的6×6的区域
我们把0设置成黑色、1设置成白色。最终呈现的效果,是不是很像数字7?
 
而CNN模型能够告诉我们
这样一个6×6的像素图,是否是数字7?或返回它属于数字0~9的概率分别是多少?


下面,我们对这个CNN模型进行分解:

CNN模型第一步:提取特征,得到特征图

1、利用多个不同的卷积核(也称特征过滤器,如 3×3、5×5)对图像做滑动窗口计算
2、每一个卷积核计算完成后,会得到一张对应的特征图(一核对一图)

本例中,需提取水平和垂直两大特征部分,分别在下面的两个3×3的卷积核中得到体现

 

滑动窗口计算规则:
1、先按顺序提取原始图片中3×3的像素区域
2、再将其每个像素单元依次与卷积核内相对应的像素值相乘,再求和
3、再把结果记录在新的4×4的像素图上。

注意:输入图像、卷积核、特征图、池化核的尺寸大小,有数学公式关系
这部分主要由卷积操作的参数(如核大小、步长、填充)决定

  

本例整个计算完成后,我们会得到两个4×4的特征图(一个卷积核对应一个特征图)
我们可以看到:
根据特征图的颜色深浅(数字大小),原始图片中的7
垂直部分特征被很好提取出来了(明显),而水平部分特征却没被提取出来(不明显)
这是因为在特征提取计算的过程中,像素图从原6×6被降维成了4×4,边缘特征丢失了

这里使用一种被称为Padding的扩充方法,为了解决边缘特征的提取问题
将原始的6×6图像,先扩充成8×8,扩充部分的像素值均设为 0
这样,在特征提取计算后,转化后特征图的像素同为6×6,最终两个特征都能完美提取到


CNN模型的第二步:最大池化Max Pooling

常用最大池化平均池化,使用池化核(如 2×2)对特征图降采样,减少参数数量和计算量,降低数据维度。换句话说,就是将图片数据进一步压缩,仅反映特征图中最突出的特点。

1、将6×6的特征图,用2×2的网格(池化核),分割成3×3的部分
2、再提取每个部分中的最大值
3、再放于最大池化后的3×3网格中。池化后的数据保留了原始图中最精华的特征部分

注意:输入图像、卷积核、特征图、池化核的大小之间,有数学公式关系
这部分主要由卷积操作的参数(如核大小步长填充)决定

 


CNN模型第三步:把池化后的数据,做扁平化处理

1、把池化后的两个3×3的像素图,叠加转化成一维的数据条(一维向量)
2、再将数据条录入到后面的全连接隐藏层,最终产生输出

  

这里提一点:全连接隐藏层
意味着这里的任意一个神经元都与前后层的所有神经元相连接
这样就可以保证,最终的输出值,是基于图片整体信息的结果


在输出阶段:
可使用Sigmoid函数,返回0~1的值,代表该图片是否是7的概率
也可用Softmax函数,返回该图案分别属于0~9的概率



到这里,一个完整的CNN模型的数据流就完成了!

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

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

相关文章

MIT 6.S081 2020Lab5 lazy page allocation 个人全流程

文章目录 零、写在前面一、Eliminate allocation from sbrk()1.1 说明1.2 实现 二、Lazy allocation2.1 说明2.2 实现 三、Lazytests and Usertests3.1 说明3.2 实现3.2.1 lazytests3.2.2 usertests 零、写在前面 可以阅读下4.6页面错误异常 像应用程序申请内存,内…

C++初阶-list的使用2

目录 1.std::list::splice的使用 2.std::list::remove和std::list::remove_if的使用 2.1remove_if函数的简单介绍 基本用法 函数原型 使用函数对象作为谓词 使用普通函数作为谓词 注意事项 复杂对象示例 2.2remove与remove_if的简单使用 3.std::list::unique的使用 …

如何优化 MySQL 存储过程的性能?

文章目录 1. 优化 SQL 语句避免全表扫描减少子查询,改用 JOIN避免 SELECT 2. 合理使用索引3. 优化存储过程结构减少循环和临时变量避免重复计算 4. 使用临时表和缓存5. 优化事务处理6. 分析和监控性能7. 优化数据库配置8. 避免用户自定义函数(UDF&#…

创新点!贝叶斯优化、CNN与LSTM结合,实现更准预测、更快效率、更高性能!

能源与环境领域的时空数据预测面临特征解析与参数调优双重挑战。CNN-LSTM成为突破口:CNN提取空间特征,LSTM捕捉时序依赖,实现时空数据的深度建模。但混合模型超参数(如卷积核数、LSTM层数)调优复杂,传统方法…

【Flutter】创建BMI计算器应用并添加依赖和打包

😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍创建BMI计算器应用并添加依赖和打包。 学其所用,用其所学。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,下…

【Linux 学习计划】-- 倒计时、进度条小程序

目录 \r 、\n、fflush 倒计时 进度条 进度条进阶版 结语 \r 、\n、fflush 首先我们先来认识这三个东西,这将会是我们接下来两个小程序的重点之一 首先是我们的老演员\n,也就是回车加换行 这里面其实包含了两个操作,一个叫做回车&…

微服务的应用案例

从“菜市场”到“智慧超市”:一场微服务的变革之旅 曾经,我们的系统像一个熙熙攘攘的传统菜市场。所有功能模块(摊贩)都挤在一个巨大的单体应用中。用户请求(买菜的顾客)一多,整个市场就拥堵不堪…

2025网络安全趋势报告 内容摘要

2025 年网络安全在技术、法规、行业等多个维度呈现新趋势。技术上,人工智能、隐私保护技术、区块链、量子安全技术等取得进展;法规方面,数据安全法规进一步细化;行业应用中,物联网、工业控制系统安全升级,供…

云原生安全基石:深度解析HTTPS协议(从原理到实战)

🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念:HTTPS是什么? HTTPS(HyperText Transfer Protocol Secure)是HTTP协议的安全版本&#xff0c…

Autodl训练Faster-RCNN网络--自己的数据集(一)

参考文章: Autodl服务器中Faster-rcnn(jwyang)复现(一)_autodl faster rcnn-CSDN博客 Autodl服务器中Faster-rcnn(jwyang)训练自己数据集(二)_faster rcnn autodl-CSDN博客 食用指南:先跟着参考文章一进行操作,遇到问题再来看我这里有没有解…

python打卡day36

复习日 仔细回顾一下神经网络到目前的内容,没跟上进度的补一下进度 作业:对之前的信贷项目,利用神经网络训练下,尝试用到目前的知识点让代码更加规范和美观。探索性作业(随意完成):尝试进入nn.M…

Paimon和Hive相集成

Flink版本1.17 Hive版本3.1.3 1、Paimon集成Hive 将paimon-hive-connector.jar复制到auxlib中,下载链接Index of /groups/snapshots/org/apache/https://repository.apache.org/snapshots/org/apache/paimon/ 通过flink进入查看paimon /opt/softwares/flink-1.…

HarmonyOS 鸿蒙应用开发进阶:深入理解鸿蒙跨设备互通机制

鸿蒙跨设备互通(HarmonyOS Cross-Device Collaboration)是鸿蒙系统分布式能力的重要体现,通过创新的分布式软总线技术,实现了设备间的高效互联与能力共享。本文将系统性地解析鸿蒙跨设备互通的技术架构、实现原理及开发实践。 跨设…

Vue.js教学第十五章:深入解析Webpack与Vue项目实战

Webpack 与 Vue 项目详解 在现代前端开发中,Webpack 作为最流行的模块打包工具之一,对于 Vue 项目的构建和优化起着至关重要的作用。本文将深入剖析 Webpack 的基本概念、在 Vue 项目中的应用场景,并详细讲解常用的 Webpack loaders 和 plugins 的配置与作用,同时通过实例…

Cmake编译gflags过程记录和在QT中测试

由于在QT中使用PaddleOCR2.8存在这样那样的问题,查找貌似是gflags相关问题导致的,因此从头开始按相关参考文章编译一遍gflags源码,测试结果表明Qt5.14.2中使用MSVC2017X64编译器运行的QTgflags项目是正常。 详细编译步骤如下: 1、…

项目中Warmup耗时高该如何操作处理

1)项目中Warmup耗时高该如何操作处理 2)如何在卸载资源后Untracked和Other的内存都回收 3)总Triangles的值是否包含了通过GPU Instancing画的三角形 4)有没有用Lua来修复虚幻引擎中对C代码进行插桩Hook的方案 这是第432篇UWA技术知…

制作一款打飞机游戏53:子弹样式

现在,我们有一个小程序可以发射子弹,但这些子弹并不完美,我们稍后会修复它们。 子弹模式与目标 在开始之前,我想修正一下,因为我观察到在其他射击游戏中有一个我想复制的简单行为。我们有静态射击、瞄准射击和快速射击…

Docker运维-5.3 配置私有仓库(Harbor)

1. harbor的介绍 Harbor(港湾),是一个用于存储和分发 Docker 镜像的企业级 Registry 服务器。以前的镜像私有仓库采用官方的 Docker Registry,不便于管理镜像。 Harbor 是由 VMWare 在 Docker Registry 的基础之上进行了二次封装,加进去了很…

day 36

利用前面所学知识,对之前的信贷项目,利用神经网络训练 # 先运行之前预处理好的代码 import pandas as pd import pandas as pd #用于数据处理和分析,可处理表格数据。 import numpy as np #用于数值计算,提供了高效的数组…

mybatis-plus使用记录

MyBatis-Plus 学习笔记 一、 快速入门 MyBatis-Plus (MP) 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 1. 引入 Maven 依赖 要使用 MyBatis-Plus,首先需要在项目的 pom.xml 文件中引入相…