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

【神经网络】卷积神经网络CNN

卷积神经网络

欢迎访问Blog全部目录!

文章目录

  • 卷积神经网络
  • 1. 神经网络概览
  • 2.CNN(Convolutional Neunal Network)
    • 2.1.学习链接
    • 2.2.CNN结构
      • 2.2.1.基本结构
        • 2.2.1.1输入层
        • 2.2.1.2.卷积层|Convolution Layers
        • 2.2.1.3.池化层|Pooling layers
        • 2.3.1.4.全连接层|Linear Layers
      • 2.2.2.核心要素
    • 2.3.pytorch CNN
      • 2.3.1.区分conv1d与conv2d
      • 2.3.2.CNN搭建与参数
      • 2.3.3.示意图:star:

1. 神经网络概览

Leijnen, Stefan & Veen, Fjodor. (2020). The Neural Network Zoo. Proceedings. 47. 9. 10.3390/proceedings47010009.

2.CNN(Convolutional Neunal Network)

CNN的核心为使用卷积核对图像矩阵进行卷积运算(线性运算)!!!

2.1.学习链接

学习笔记:深度学习(3)——卷积神经网络(CNN)理论篇_cnn理论-CSDN博客
【深度学习】一文搞懂卷积神经网络(CNN)的原理(超详细)_卷积神经网络原理-CSDN博客

2.2.CNN结构

2.2.1.基本结构

在这里插入图片描述

2.2.1.1输入层

​ 图片在计算机中是包括 (宽,高,深)的三维矩阵,元素为灰度值或RGB值,其中矩阵的深即为RGB层次。如果为RGB图片,图片深度为3。图片的三维矩阵即为CNN的输入。(宽,高)矩阵为1个channel,(宽,高)矩阵为特征图

​ 输入层即接收原始图片数据,CNN可以保留图片的连续像素(物体的不变性),加深神经网络对图片的理解。

2.2.1.2.卷积层|Convolution Layers

作用:捕捉图片的局部特征而不受其位置的影响。

多个卷积核叠加即为卷积层。

卷积层后需接激活函数(如ReLU)来引入非线性。

2.2.1.3.池化层|Pooling layers

作用:通过减小特征图的大小(下采样)来减少计算复杂性。它通过选择池化窗口内的最大值或平均值来实现。这有助于提取最重要的特征。

有点类似于图像的模糊处理!

2.3.1.4.全连接层|Linear Layers

全连接层将提取的特征映射转化为网络的最终输出。这可以是一个分类标签、回归值或其他任务的结果。

2.2.2.核心要素

名称name含义
过滤器(卷积核)过滤器为可移动的三维小窗口矩阵(N*N*N)【kernel_size】,它是一组固定的权重。卷积操作即为将卷积核与图像进行逐元素相乘后相加。
步长stride卷积核每次滑动位置的步长。
卷积核的个数out_channels决定输出矩阵的深度depth。一个卷积核输出一个深度层。
填充值zero-padding在外围边缘补充若干圈0,方便从初始位置以步长为单位可以刚好滑倒末尾位置。数据填充的主要目的是确保卷积核能够覆盖输入图像的边缘区域,同时保持输出特征图的大小=输入特征图大小。
如果想要维持特征图大小不变, p a d d i n g = ( k e r n e l _ s i z e − 1 ) / 2 padding=(kernel\_size-1)/2 padding=(kernel_size1)/2!!

以下图为例(图示为conv2d):

步长=2,卷积核个数=2,填充值=1(在图片周围补1圈0),卷积核尺寸为3*3*3

请添加图片描述
在这里插入图片描述

2.3.pytorch CNN

API:torch.nn.convolution-layers — PyTorch 2.2 documentation

2.3.1.区分conv1d与conv2d

conv1dconv2d
输入语音:二维矩阵图像:三维矩阵
卷积核(卷积核尺寸(二维),卷积核个数)(卷积核尺寸(三维),卷积核个数)
总结在特征图内只能竖着扫在特征图内先横着扫再竖着扫

图像的CNN使用的是conv2d!!

2.3.2.CNN搭建与参数

import torch
import torch.nn as nnclass Cnn(nn.Module):def __init__(self):super(Cnn, self).__init__()self.conv1 = nn.Sequential(  # 输入图像尺寸为(1,28,28)nn.Conv2d(in_channels=1,  # 输入图像的深度 灰度图为1,rgb图为3out_channels=16,  # 卷积核个数,输出图像的深度kernel_size=5,  # 卷积核尺寸5*5*1stride=1,  # 步长padding=2  # 填充大小 如果想要 con2d 出来的图片长宽没有变化, padding=(kernel_size-1)/2),  # 输出图像尺寸为(16,28,28)nn.ReLU(),  # 激活函数nn.MaxPool2d(kernel_size=2,  # 池化小区域尺寸2*2,区域模糊# stride=2,  # 步长,默认=kernel_size),  # 输出图像尺寸为(16,14,14))self.conv2 = nn.Sequential(  # 输入图像尺寸为(16,14,14)nn.Conv2d(in_channels=16,  # 输入图像的深度out_channels=32,  # 卷积核个数,输出图像的深度kernel_size=5,  # 卷积核尺寸5*5*16stride=1,  # 步长padding=2  # 填充大小),nn.ReLU(),nn.MaxPool2d(kernel_size=2,)  # 输出图像尺寸为(32,7,7))self.out = nn.Linear(32 * 7 * 7, 10)  # 输出10*1的矩阵def forward(self, x):x = self.conv1(x)x = self.conv2(x)# x图像平铺成 (batch_size=1, 32 * 7 * 7)x = x.view(x.size(0), -1)  # view中一个参数定为-1,代表自动调整这个维度上的元素个数,以保证元素的总数不变。output = self.out(x)return outputcnn = Cnn()
print(cnn)
'''
Cnn((conv1): Sequential((0): Conv2d(1, 16, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2))(1): ReLU()(2): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False))(conv2): Sequential((0): Conv2d(16, 32, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2))(1): ReLU()(2): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False))(out): Linear(in_features=1568, out_features=10, bias=True)
)
'''

2.3.3.示意图⭐️

注:由于画幅有限,示意图仅画了1个大卷积层。
在这里插入图片描述

相关文章:

【神经网络】卷积神经网络CNN

卷积神经网络 欢迎访问Blog全部目录! 文章目录 卷积神经网络1. 神经网络概览2.CNN(Convolutional Neunal Network)2.1.学习链接2.2.CNN结构2.2.1.基本结构2.2.1.1输入层2.2.1.2.卷积层|Convolution Layers2.2.1.3.池化层|Pooling layers2.3…...

微信小程序-接入sse数据流并实现打字机效果( ChatGPT )

从流中获取的数据格式如下 小程序调用SSE接口 const requestTask wx.request({url: xxx, // 需要请求的接口地址enableChunked: true, // enableChunked必须为truemethod: "GET",timeout: 120000,success(res) {console.log(res.data)},fail: function (error) {//…...

深入了解iOS内存(WWDC 2018)笔记-内存诊断

主要记录下用于分析iOS/macOS 内存问题的笔记。 主要分析命令: vmmap, leaks, malloc_history 一:前言 有 3 种思考方式 你想看到对象的创建吗?你想要查看内存中引用对象或地址的内容吗?或者你只是想看看 一个实例有多大&#…...

《C语言深度解剖》(4):深入理解一维数组和二维数组

🤡博客主页:醉竺 🥰本文专栏:《C语言深度解剖》 😻欢迎关注:感谢大家的点赞评论关注,祝您学有所成! ✨✨💜💛想要学习更多数据结构与算法点击专栏链接查看&am…...

信号处理基础

傅里叶分析之掐死教程(完整版)更新于2014.06.06 先放一篇关于傅里叶变换以及欧拉公式的讲解在这里。后续会搬运到CSDN上。...

原地移除数组中所有的元素val,要求时间复杂度为O(N),空间复杂度为O(1)

一、题目描述 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超…...

如何提升产品用户体验?4个工具+6张案例,让你快速吃透!

在数字时代的浪潮中,产品用户体验早已不再是简单的“好用”或“不好用”的评判标准,它不仅仅是功能的堆砌,更是情感的连接、智慧的体现。在这个竞争激烈的市场中,只有那些能够深入理解用户需求、精准把握用户心理的产品&#xff0…...

C++学习笔记九--模版

目录 前言 1.函数模版 1.函数模版的概念和定义 2.函数模版的实例化 2.类模版 1.类模版的概念和定义 2.类模版的实例化 3.示例代码 前言 这篇文章介绍下C中的模版,包括函数模版和类模版。 1.函数模版 在编程的过程中,编写函数都会考虑将其写成模版…...

19、差分矩阵

差分矩阵 题目描述 输入一个n行m列的整数矩阵,再输入q个操作,每个操作包含五个整数x1, y1, x2, y2, c,其中(x1, y1)和(x2, y2)表示一个子矩阵的左上角坐标和右下角坐标。 每个操作都要将选中的子矩阵中的每个元素的值加上c。 请你将进行完…...

wordpress外贸独立站模板

wordpress外贸独立站模板 WordPress Direct Trade 外贸网站模板,适合做跨境电商的外贸公司官方网站使用。 https://www.waimaoyes.com/wangzhan/22.html...

HTTP/1.0、HTTP/1.1、HTTP/2.0、HTTP3.0的区别

一、HTTP/1.0 1996年5月,HTTP/1.0版本发布,为了提高系统的效率,HTTP/1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器…...

聚合DNS管理系统v1.0全新发布 域名解析管理系统

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 聚合DNS管理系统可以实现在一个网站内管理多个平台的域名解析,目前已支持的域名平台有:阿里云、腾讯云、华为云、西部数码、CloudFlare。本系统支持多用户&…...

LabVIEW厂房漏水检测监控系统

LabVIEW厂房漏水检测监控系统 随着信息技术和智能制造的快速发展,对于精密仪器和重要物品存放场所的环境监控日益重要,特别是防止漏水带来的潜在风险。漏水不仅可能导致珍贵资料或仪器的损坏,还可能引发安全事故,给企业和研究机构…...

(3)(3.1) 英特尔Realsense深度摄像头(二)

文章目录 前言 5 配置ArduPilot 6 地面测试:飞行前验证 7 飞行测试 8 实验 9 数据闪存记录 前言 本文介绍如何将英特尔 Realsense 深度摄像头(Intel Realsense Depth Camera)与 ArduPilot 配合使用,以实现避障(obstacle avoidance)。该方法使用在…...

go interface{} 作为函数参数

在 Go 中,将 interface{} 作为函数参数的意义在于使函数接受任意类型的参数。这种参数类型称为空接口,因为它不限制参数的具体类型,可以接受任何类型的值。 使用空接口作为函数参数具有以下几个意义: 通用性: 空接口允…...

Django之REST Client插件

一、接口测试工具介绍 在开发前后端分离项目时,无论是开发后端,还是前端,基本都是需要测试API接口的内容,而目前我们需要开发遵循RESTFul规范的项目,也是必然的(自己不开发前端页面)。 在网上有很多这样的工具,常用的postman,但还是需要下载安装。在这我们介绍一个VSCod…...

java实现UDP数据交互

1、回显服务器 服务器端 import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketException;public class UDP_Server {private DatagramSocket socketnull;public UDP_Server(int port) throws SocketExcepti…...

护眼台灯怎么选看哪些指标?不踩雷护眼台灯十大排名

平常经常面对电子屏幕的上班族、学业负担重的学生族用眼时间都比较长,再加上不健康的用眼习惯,近视人数不断增多。而在这当中,健康的光线也十分重要,良好的光线能够让眼睛更加舒服,用眼负担也会减轻不少,因…...

Web API(六)之正则表达式

Web API(六)之正则表达式 正则表达式正则基本使用元字符边界符量词范围字符类替换和修饰符change 事件判断是否有类正则表达式 正则表达式(Regular Expression)是一种字符串匹配的模式(规则) 使用场景: 例如验证表单:手机号表单要求用户只能输入11位的数字 (匹配)过滤…...

304. 前缀和技巧中的边界值处理

文章目录 题目问题反思 题目 题目如下,其实并不难,属于小而美的前缀和技巧中的体型。因为我之前做过这道题,所以重刷也马上就能写。但是对比我写的和之前看别人写的,明显我的代码不够简洁,一个核心的差异在于对DP数组…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)

RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...

C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...

Vite中定义@软链接

在webpack中可以直接通过符号表示src路径,但是vite中默认不可以。 如何实现: vite中提供了resolve.alias:通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...

Docker拉取MySQL后数据库连接失败的解决方案

在使用Docker部署MySQL时,拉取并启动容器后,有时可能会遇到数据库连接失败的问题。这种问题可能由多种原因导致,包括配置错误、网络设置问题、权限问题等。本文将分析可能的原因,并提供解决方案。 一、确认MySQL容器的运行状态 …...