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

【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.dtcms.com/a/290918.html

相关文章:

  • vLLM 基准测试与性能测试框架:全面解析LLM推理性能评估体系
  • 中断事件触发时CPU与NVIC的协作机制详解
  • 20250720题解
  • 4N80-ASEMI开关电源领域专用4N80
  • mcu中的调试接口是什么?
  • repmgr+pgbouncer实现对业务透明的高可用切换
  • Apache Ignite Binary Object Restrictions
  • MS8847-双路 H 桥驱动器集成电路
  • Unity 基于Odin编辑器插件写了一个替换文件夹下所有Prefab中标记的Text或者Image颜色的工具
  • ACOT Buck输出电容大小的计算
  • fibonacci的4种实现
  • Unity之可视化编程VisualScripting快速入门
  • 1553啤酒品牌作为都洲武魂世界格斗冠军赛冠名赞助商
  • Jenkins pipeline触发下游流水线
  • 数据结构:反转字符串(Reversing a String)
  • 052_迭代器(Iterator / ListIterator)
  • HCL 三层知识总结
  • Java 二叉树
  • uniapp+vue3预约时间和日期
  • registry-ui docker搭建私有仓库的一些问题笔记
  • 在React中做过哪些性能优化?
  • java每日精进 7.21【Uel表达式和流程设计】
  • 【Elasticsearch】IndexModule
  • 【沧海拾昧】微分先行PID与中间微分反馈控制
  • 工业网关的应用场景
  • 【正常配置了beast扩展,phpinfo信息也显示了,但是就是不运行】
  • 前端-DOM
  • pandas 的series和dataframe的用法,六个题目
  • 141、环形链表
  • 前后端分离项目进阶1---后端