【CNN】卷积神经网络- part1

1.卷积

1.局部连接

定义:只是于输入数据的一部分区域相连,每个神经元只关注一小部分

作用:模仿人类的视野机制,极大的减少了模型参数的数量,降低了计算成本

2.权重共享

定义:所有神经元使用相同的权重向量来检测输入数据的不同局部区域。换句话说,卷积核(滤波器)在整个输入上滑动时,其内部的权重保持不变。

作用:不仅进一步减少了模型参数的数量,提高了计算效率,还赋予了模型平移不变性(translation invariance),意味着无论某个特征出现在图像的哪个位置,模型都能识别它。这使得CNN非常适合处理具有平移不变性的任务,如图像分类。

3.池化

定义:减少特征图的空间尺寸,从而降低计算复杂度并控制过拟合。最常见的形式是最大池化(Max Pooling),它通过取每个固定大小子区域的最大值来缩小特征图的尺寸。

作用:减少维度外,池化还能提供某种程度的位置不变性,因为它减少了输出对输入中小变化的敏感性。

1.1 卷积运算

滑动卷积核,在每个局部区域先乘再和,最终生成特征图,输出标量。

代码实现二维卷积算子

import torch
import torch.nn as nn# 定义输入矩阵和卷积核
input_matrix = torch.tensor([[1., 2., 3.],[4., 5., 6.],[7., 8., 9.]
], dtype=torch.float32)  kernel = torch.tensor([[0., 1.],[2., 3.]
], dtype=torch.float32)  # 将输入扩展为四维张量
input_tensor = input_matrix.view(1, 1, 3, 3)  # 创建卷积层(
conv_layer = nn.Conv2d(in_channels=1,out_channels=1,kernel_size=2,bias=False  # 禁用偏置项
)# 手动设置卷积核权重
conv_layer.weight.data = kernel.view(1, 1, 2, 2)# 执行卷积操作
output = conv_layer(input_tensor)# 输出结果
result = output.squeeze().detach()  print("卷积结果:\n", result)

1.2 权重共享

这个卷积核包含了一组权重,用于从输入数据中提取特征。通过权值共享,网络能够在不同的输入位置之间共享计算和参数,从而大大减少模型参数的数量,提高网络的泛化能力。

减少模型的参数数量,降低了过拟合风险,因为使用了相同的权重和偏置,所以实现平移不变性。且更加简洁

1.3 卷积之步长

  • 假设有一个大小为5×5的输入图像(为了简化问题,不考虑颜色通道等复杂情况),而卷积核的大小是3×3。

  • 如果步长设置为1,那么卷积核就从左上角开始,每次向右移动1个单位,当到达图像边缘后,向下移动1个单位,继续向右扫描。这样在横向和纵向都会有很多重叠的计算区域,最终得到的输出特征图尺寸较大,会得到一个3×3的矩阵,可以捕捉到更密集的空间细节。

  • 若步长设置为2,则卷积核在每次移动时会跳过1个单位(因为步长是2),这样输出特征图的尺寸就会减小,会得到一个2×2的矩阵,计算量也会相应减少。较大的步长容易导致特征图中信息的稀疏,但可以有效降低模型的复杂度。

2.4 卷积的Padding边缘填充

保持输入和输出图像尺寸保持一致性。

 

 卷积之后的特征图大小可以通过一个具体的公式来计算。假设输入图像的尺寸是 W×H(宽度和高度),卷积核的大小是 F×F,步长(stride)为 S,填充(padding)大小为 P,则输出特征图的尺寸 W×H 可以通过以下公式计算:

 

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

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

相关文章

漏洞生命周期管理:从发现到防护的全流程方案

漏洞并非孤立存在,而是遵循 “发现→评估→修复→验证→闭环” 的生命周期。多数企业安全事件的根源并非缺乏漏洞发现能力,而是对漏洞生命周期的管理缺失 —— 大量漏洞被发现后长期未修复,或修复后未验证效果。构建全流程漏洞生命周期管理体…

opencv图像基本操作解析与实操

图片操作cv2.namedWindow() 创建命名窗口cv2.imshow()显示窗口cv2.destroyAllwindws()摧毁窗口cv2.resizeWindow()改变窗口大小cv2.waitKey()等待用户输入cv2.imread()读取图像img.shape 图片h、w、c(高、宽、通道数import cv2 # opencv读取的格式是BGR import m…

kafka--基础知识点--6.1--LEO、HW、LW

在 Apache Kafka 中,LEO(Log End Offset)、HW(High Watermark)、和 LW(Low Watermark) 是副本机制和日志管理中的核心概念,共同确保数据一致性、可见性和存储效率。以下是它们的详细…

在线深凹槽深检测方法都有哪些 —— 激光频率梳 3D 轮廓检测

引言在制造业中,深凹槽深度的精确检测是保证零部件质量的关键环节。随着智能制造的推进,在线检测需求日益迫切,传统检测方法在效率和精度上的不足逐渐显现。本文将梳理在线深凹槽深的传统检测方法,并重点探讨激光频率梳 3D 轮廓检…

NumPy 数组拼接的高级技巧与实践

在数据处理和机器学习领域,NumPy 是 Python 中最核心的科学计算库之一。NumPy 数组(ndarray)的拼接操作是数据预处理中极为常见的需求。本文将深入探讨如何将不同形状的 NumPy 数组进行拼接,特别是如何将多个一维数组与二维数组进…

原创-基于 PHP 和 MySQL 的证书管理系统 第三版

第一版属于开源版本,所以后台功能没有开发许多出来,今天分享证书查询第三版; 通过几天的紧急写代码及测试;第三版基本可以上线上,不过后面有一些BUG只能一边修复。 演示地址:物星科云证书管理系统 第三版…

爬虫虚拟环境

conda create --name myrepenv python3.12创建一个名为 myrepenv、Python 版本为 3.12 的全新 Conda 虚拟环境,适合需要隔离依赖或测试不同 Python 版本的项目。我的方式创建(需要指定盘符)conda create --prefixD:\Anaconda3\envs\myrepenv python3.12展示所下的co…

Netty集群方案详解与实战(Zookeeper + Redis + RabbitMQ)

一、背景 二、Netty 单体架构的优缺点 优点 缺点 三、Netty 集群架构的优缺点 优点 缺点 四、适用场景对比 五、Netty单体架构代码实现 六、Netty集群架构方案实现 方案一、Nginx负载均衡实现集群(较为简单) Nginx配置 前端连接方式 方案二、NacosGateway(结合…

Oracle迁移到高斯,查询字段默认小写,解决办法

一、问题说明 Oracle中,查询结果字段默认大写。高斯中,查询结果字段默认小写。在Mybatis的xml中,如果查询语句使用Map接收查询结果,使用resultType"java.util.HashMap"或resultType"Map"等写法,返…

Android Jetpack Compose + MVVM 开发流程深度分析

核心组件关系图 [View] -- 观察 --> [ViewModel] -- 操作 --> [Repository]| | Compose UI StateFlow/LiveData| | 用户交互事件 Room/Retrofit| …

Tailwind CSS快速上手 Tailwind CSS的安装、配置、使用

📚前言 在Web前端开发的历史长河中,CSS的编写方式经历了多次演进,从早期的原生CSS 到 CSS预处理(Less/Sass/Stylus) 到 CSS-in-JS(Styled-Components/Emotion) 再到 Utility-First 原子化CSS。每一种演进方案其本质都是围绕“开发效率”、“…

单例模式的智慧:从UVM看控制的艺术

有时候,生活中的很多东西其实只需要一个就够了,就像一个公司只需要一个CEO,一个王朝只需要一个皇帝。在UVM验证环境中,也有很多这样的需求——有些对象,我们希望它在整个仿真过程中只存在一个实例。这就是我们今天要聊…

Hexo - 免费搭建个人博客01 - 安装软件工具

导言我的博客:https://q164129345.github.io/ Hexo 作为一个 Node.js 框架,它依赖于 Node.js 运行时环境来执行。 一、安装Node.js官方网址:https://nodejs.org/zh-cn追求系统稳定性、可靠性以及希望减少维护频率的用户来说,LTS版…

【Kubernetes】集群启动nginx,观察端口映射,work节点使用kubectl配置

参考b站叩丁狼总结:完整版Kubernetes(K8S)全套入门微服务实战项目,带你一站式深入掌握K8S核心能力 在master节点执行 kubectl create deployment nginx --imagenginxkubectl expose deployment nginx --port80 --typeNodePort1. …

20250704-基于强化学习在云计算环境中的虚拟机资源调度研究

基于强化学习在云计算环境中的虚拟机资源调度研究 随着云计算规模的持续扩大,数据中心虚拟机资源调度面临动态负载、异构资源适配及多目标优化等挑战。传统启发式算法在复杂场景下易陷入局部最优,而深度强化学习(DRL)凭借序贯决策…

day 33打卡

day 21 常见的降维算法 # 先运行之前预处理好的代码 import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns import warnings warnings.filterwarnings(ignore)# 设置中文字体 plt.rcParams[font.sans-serif] [SimHei] plt.rcParam…

sec(x)积分推导

在MATLAB中绘制 sec⁡(x)、cos(x) 和 ln⁡∣sec⁡(x)tan⁡(x)∣的函数图像,需要特别注意 sec⁡(x) 在 cos⁡(x)0(即 xπ/2kπ)处的奇点。(deepseek生成代码)% 定义x范围(-2π到2π),…

gpt面试题

vue面试题 💡 一、响应式系统相关 ❓1. Vue 3 的响应式系统是如何实现的?和 Vue 2 有何本质区别? 答案: Vue 3 使用 Proxy 实现响应式(位于 vue/reactivity 模块),替代 Vue 2 的 Object.defineP…

【基于OpenCV的图像处理】图像预处理之图像色彩空间转换以及图像灰度化处理

目录 零、写在前面的话 一、图像色彩空间转换 1.1 RGB颜色空间 1.1.1 RGB颜色空间概念 1.1.2 RGB颜色模型​编辑 1.1.3 关于颜色加法 1.1.4 颜色加权加法 1.2 HSV颜色空间 1.2.1 HSV颜色空间概念 1.2.2 HSV颜色模型 1.2.3 应用意义 1.3 颜色转换 1.3.1 转换方法 …

Java TCP 通信详解:从基础到实战,彻底掌握面向连接的网络编程

作为一名 Java 开发工程师,你一定在实际开发中遇到过需要建立稳定连接、可靠传输、有序通信等场景。这时,TCP(Transmission Control Protocol) 通信就成为你必须掌握的重要技能之一。TCP 是一种面向连接、可靠、基于字节流的传输协…