【神经网络】卷积神经网络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 nn

class Cnn(nn.Module):
    def __init__(self):
        super(Cnn, self).__init__()
        self.conv1 = nn.Sequential(  # 输入图像尺寸为(1,28,28)
            nn.Conv2d(
                in_channels=1,  # 输入图像的深度 灰度图为1,rgb图为3
                out_channels=16,  # 卷积核个数,输出图像的深度
                kernel_size=5,  # 卷积核尺寸5*5*1
                stride=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*16
                stride=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 output


cnn = 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个大卷积层。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

设计模式——2_8 策略(Strategy)

文章目录 定义图纸一个例子:如何切换坦克的攻击方式GameElement(游戏元素)TankFactory(坦克工厂)Tank(坦克) 医疗车和飞行车策略模式Behavior(行为)TankTankFactory 碎碎念策略和状态为什么我们…

[数据结构]双向带头循环链表制作

前面我们有提到,单向不带头循环链表的制作 这里我们介绍一个双向带头循环链表的制作方法 双向带头循环链表的示意图如下 带头指针的作用体现在哪呢? 第一、防止头节点为空,既有头结点,头指针始终指向头结点,那么无论链表是否为空&#xf…

游戏公司面试题系列-CocosCreator实现虚拟摇杆控制角色移动中心旋转自转小球割草旋转逻辑

游戏公司面试题系列-CocosCreator实现虚拟摇杆控制角色移动&中心旋转自转小球&割草旋转逻辑<&#xff01;&#xff01;&#xff01;文章末尾有完整代码下载链接地址&#xff01;&#xff01;&#xff01;> Hello大家好&#xff01;今天我们来用最新的CocosCreat…

pringboot2集成swagger2出现guava的FluentIterable方法不存在

错误信息 Description: An attempt was made to call a method that does not exist. The attempt was made from the following location: springfox.documentation.spring.web.scanners.ApiListingScanner.scan(ApiListingScanner.java:117) The following method did not ex…

PHP运算符与流程控制

华子目录 运算符赋值运算符算术运算符比较运算符逻辑运算符连接运算符错误抑制符三目运算符自操作运算符 计算机码位运算符 运算符优先级流程控制控制分类顺序结构分支结构if分支switch分支 循环结构for循环while循环continuebreak 运算符 运算符&#xff1a;operator&#xf…

谷歌留痕霸屏要怎么做?

谷歌留痕霸屏&#xff0c;就是让你的网站或者页面在谷歌搜索结果里尽可能多地出现&#xff0c;就像是在你的潜在客户眼前留下深刻印象一样&#xff0c;你要做的就是在一些高权重平台发布有价值的信息&#xff0c;同时巧妙地留下你的品牌名、产品名或者任何你想要推广的关键词&a…

谷歌不收录怎么办?

谷歌不收录首先你要确认自己网站有没有出问题&#xff0c;比如你的网站是否已经公开&#xff0c;rboot是否允许搜索引擎进来&#xff0c;网站架构有没有问题&#xff0c;面包屑的结构是否有问题&#xff0c;确保你的网站没问题 接下来就是优化这个过程&#xff0c;有内容&#…

python|drop的应用

drop 删除列B 删除索引为1的行 删除列为‘A’&#xff0c;‘C’的列&#xff0c;axis表示方向 删除时保留原始 DataFrame&#xff08;使用 inplaceFalse&#xff09; 删除时直接修改原始 DataFrame&#xff08;使用 inplaceTrue&#xff09;

SEO优化艺术:精细化技巧揭示与搜索引擎推广全面战略解读

SEO&#xff08;搜索引擎优化&#xff0c;Search Engine Optimization&#xff09;是一种网络营销策略&#xff0c;旨在通过改进网站内外的各项元素&#xff0c;提升网站在搜索引擎自然搜索结果中的排名&#xff0c;从而吸引更多目标用户访问网站&#xff0c;增加流量&#xff…

如何快速开启一个项目-ApiHug - API design Copilot

ApiHug101-001开启篇 &#x1f917; ApiHug {Postman|Swagger|Api...} 快↑ 准√ 省↓ GitHub - apihug/apihug.com: All abou the Apihug apihug.com: 有爱&#xff0c;有温度&#xff0c;有质量&#xff0c;有信任ApiHug - API design Copilot - IntelliJ IDEs Plugin |…

少儿编程 2024年3月电子学会图形化编程等级考试Scratch二级真题解析(判断题)

2024年3月scratch编程等级考试二级真题 判断题&#xff08;共10题&#xff0c;每题2分&#xff0c;共20分&#xff09; 26、下列积木块运行结果为false 答案&#xff1a;错 考点分析&#xff1a;考查积木综合使用&#xff0c;重点考查逻辑或积木的使用&#xff0c;或运算是只…

用Echarts词云数据可视化热词表白​​

目录 1、使用前准备 2、准备工作 3、盒子搭建 4、整体展现 1、使用前准备 找到表白对象&#xff08;重中之重&#xff01;&#xff09;&#xff0c;不要一见钟情&#xff08;个人觉得&#xff1a;一见钟情属于见色起意&#xff01;&#xff09;&#xff0c;因为数据可视化需…

中颖51芯片学习3. 定时器

中颖51芯片学习3. 定时器 一、SH79F9476定时器简介1. 简介2. 定时器运行模式 二、定时器21. 说明&#xff08;1&#xff09;时钟&#xff08;2&#xff09;工作模式 2. 寄存器&#xff08;1&#xff09;控制寄存器 T2CON&#xff08;2&#xff09;定时器2模式控制寄存器 T2MOD …

sql注入方式之联合注入

1.1 靶场环境 系统centos7 IP地址192.168.1.24 1.2 联合注入原理 联合查询注入是联合两个表进行注入攻击&#xff0c;使用关键词 union select 对两个表进行联合查询。两个表的字段要数要相同&#xff0c;不然会出现报错。 1.3 找注入点 找注入点&#xff0c;当输入id1 an…

你知道哪几种当前流行的lisp语言的方言?

估计很多人都看过《黑客与画家》这本书&#xff0c;这本书主要介绍黑客即优秀程序员的爱好和动机&#xff0c;讨论黑客成长、黑客对世界的贡献以及编程语言和黑客工作方法等所有对计算机时代感兴趣的人的一些话题。作者保罗格雷厄姆字里行间不经意间向大家推介Lisp是最好的编程…

【linux】set ff=unix、linux设置文件格式

文章目录 一、文件格式二、如何查看文件格式三、设置文件格式、set ffunix四、查看unix与dos的区别 一、文件格式 当我们打开sh脚本时发现有时候格式是unix(LF) ,有时候是windows(CR LF) 。如下图&#xff1a; 文件格式影响了文件中的换行符 linux中sh类型的文件一般要设置为…

[dvwa] CSRF

CSRF 0x01 low 跨站&#xff0c;输入密码和确认密码直接写在url中&#xff0c;将连接分享给目标&#xff0c;点击后修改密码 社工方式让目标点击短链接 伪造404页&#xff0c;在图片中写路径为payload&#xff0c;目标载入网页自动请求构造链接&#xff0c;目标被攻击 http…

Python | Leetcode Python题解之第18题四数之和

题目&#xff1a; 题解&#xff1a; class Solution:def fourSum(self, nums: List[int], target: int) -> List[List[int]]:quadruplets list()if not nums or len(nums) < 4:return quadrupletsnums.sort()length len(nums)for i in range(length - 3):if i > 0 …

222222222222222222222222

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和…

DevOps已死?2024年的DevOps将如何发展

随着我们进入2024年&#xff0c;DevOps也发生了变化。新兴的技术、变化的需求和发展的方法正在重新定义有效实施DevOps实践。 IDC预测显示&#xff0c;未来五年&#xff0c;支持DevOps实践的产品市场继续保持健康且快速增长&#xff0c;2022年-2027年的复合年增长率&#xff0…