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

PyTorch笔记8----------卷积神经网络

卷积神经网络主要包含:卷积层、激活层、BN层、池化层、FC层、损失层

具体内容后续应该会对机器学习和深度学习进行更新

1.卷积层

  • 对图像和滤波矩阵做内积(逐个元素相乘再求和)的操作
  • nn.Conv2d(in_channels,out_channels,kernel_size,stride,padding,dilation,groups,bias)
    • in_channels:输入数据的通道数
    • out_channels:卷积操作后输出的通道数,也就是卷积核的数量。每个卷积核会生成一个输出通道。
    • kernel_size:卷积核大小
    • stride:每次移动卷积核的步长大小
    • padding:在输入数据的边缘添加零值填充的大小,用于控制输出特征图的尺寸
    • dilation:控制卷积核中元素之间的间距,即空洞卷积的膨胀率
    • groups:对当前卷积进行分组卷积
    • bias:是否在卷积操作后添加偏置项。默认值为 True,表示添加偏置;如果设置为 False,则不添加偏置。
  • 感受野:指神经网络中神经元“看到的”输入区域,再卷积神经网络中,特征图上某个元素的计算受输入图像上某个区域的影响,这个区域即该元素的感受野

2.池化层

  • 对输入的特征图进行压缩
    • 使特征图变小,简化网络的计算复杂度
    • 进行特征压缩,提取主要特征
  • 常用的池化方法有:最大池化、平均池化
  • nn.MaxPool2d(kernel_size,stride,padding,dilation,return_indices,ceil_mode)
    • kernel_size:池化窗口的大小(高度和宽度)
    • stride:池化窗口在特征图上滑动的步长
    • padding:输入特征图边缘的填充像素数
    • dilation:池化窗口的扩张系数(空洞池化)
    • return_indices:是否返回最大值在输入特征图中的索引(坐标)。默认值为 False
    • ceil_mode:控制输出特征图尺寸的计算方式。默认值为 False(向下取整)。

3.上采样层

  • nn.functional.interpolate(input,size,mode,alig_corners)
    • input:输入张量
    • size:指定输出尺寸或缩放比例
    • mode:决定如何计算新像素的值,常见值:nearest,bilinear,bicubic,area,linear
    • alig_corners:控制​输入与输出边缘像素的坐标映射关系
  • nn.ConvTranspose2d(in_channels,out_channels,kernel_size,stride,padding,out_padding,bias)
    • in_channels:输入特征图的通道数
    • out_channels:当前层输出的特征图通道数
    • ​kernel_size:定义转置卷积的核尺寸
    • stride:控制输出特征图的尺寸放大倍数
    • padding:转置卷积的 padding是在输入特征图的​边缘填充 0​​,目的是控制输出尺寸的下限
    • out_padding:转置卷积特有的参数,用于对输出的边缘进行​​额外填充​​(填充值为 0),以精确调整输出尺寸
    • bias:在卷积操作后对每个通道添加一个可学习的偏置值

4.激活层

  • 为了增加网络的非线性,进而提升网络的表达能力
  • 常见的激活函数:ReLU、Leakly ReLU、ELU、Tanh
  • torch.nn.ReLU()

5.BatchNorm层

  • 通过一定的规范手段,把每层神经网络任意神经元这个输入值的分布强行拉回到均值0方差1的标准正态分布
  • Batchnorm是一种归一化手段,它会减小图像之间的绝对差异,突出相对差异,加快训练速度
  • nn.BatchNorm2d(num_features,eps,momentum,affine,track_running_stats)
    • num_features:输入特征图的通道数
    • eps:归一化时的小常数,用于防止分母为零
    • momentum:控制运行时全局均值(running_mean)和全局方差(running_var)的更新速度
    • affine:
      • 若 affine=True(默认),层会学习两个可训练参数:
        • gamma(缩放因子):形状为 (num_features,),用于调整归一化后的特征范围
        • beta(平移因子):形状为 (num_features,),用于恢复特征的原始分布(避免归一化后信息丢失)
      • 若 affine=False​​:gamma和 beta被固定为 1 和 0,仅执行纯归一化(无缩放和平移)。
    • track_running_stats:若 track_running_stats=True(默认),训练阶段会累积全局均值(running_mean)和方差(running_var),推理时使用这些全局统计量代替当前批次的统计量;若为 False,推理时直接使用当前批次的均值和方差(可能导致不稳定)。

6.全连接层

  • 连接所有的特征,将输出值送入分类器
    • 对前层的特征进行一个加权和,将特征空间通过线性变换映射到样本标记空间
    • 可以通过1*1卷积加平均池化代替
    • 可以通过全连接层参数冗余
    • 全连接层参数和尺寸相关
  • nn.Linear(in_features,out_features,bias)
    • in_features:输入特征向量的维度
    • out_features:输出特征向量的维度
    • bias:是否添加可学习的偏置向量

7.Dropout层

  • 在不同的训练过程中随机扔掉一部分神经元,以此来减少参数
  • 测试过程中不使用随机失活,所有的神经元都激活
  • 为了防止或者减轻过拟合而使用的函数,一般用在全连接层
  • nn.dropout

8.损失层

  • 设置一个损失函数用来比较网络的输出值和目标值,通过最小化损失来驱动网络的训练
  • 网络的损失通过前向操作计算,网络参数相对于损失函数的梯度则通过反向操作计算
  • 分类问题的损失
    • nn.BCELoss
    • nn.CrossEntropyLoss
  • 回归问题的损失
    • nn.L1Loss
    • nn.MSELoss
    • nn.SmoothL1Loss

8.学习率

  • 决定目标函数能否收敛到局部最小值以及何时收敛到最小值
  • torch.optim.lr_scheduler

9.优化器

  • 引入随机性和噪声:GB、BGD、SGD、MBGD
  • 加入动量原则,具有加速梯度下降作用:Momentum、NAG
  • 自适应:AdaGrad、RMSProp、Adam、AdaDelta
  • torch.optim.xxxxx

10.正则化

  • L1正则:参数绝对值的和
  • L2正则:参数的平方和(weight_decay)

知识点为听课总结笔记,课程为B站“2025最新整合!公认B站讲解最强【PyTorch】入门到进阶教程,从环境配置到算法原理再到代码实战逐一解读,比自学效果强得多!”:2025最新整合!公认B站讲解最强【PyTorch】入门到进阶教程,从环境配置到算法原理再到代码实战逐一解读,比自学效果强得多!_哔哩哔哩_bilibili

http://www.dtcms.com/a/284227.html

相关文章:

  • 使用Pytorch进行数字手写体识别
  • 对比分析:给数据找个 “参照物”,让孤立数字变 “决策依据”
  • notepad++ 多行复制拼接
  • 原生前端JavaScript/CSS与现代框架(Vue、React)的联系与区别(详细版)
  • Git 子模块只更新部分模块的问题排查总结
  • Elasticsearch+Logstash+Filebeat+Kibana部署【7.1.1版本】
  • GitHub Jekyll博客本地Win开发环境搭建
  • 【URL 转换为PDF】HTML转换为PDF
  • 【哈希映射实现的并集查找】P5962 [BalticOI 2004] ships 船|普及+
  • 【析精】Landmark-Guided Subgoal Generation in Hierarchical Reinforcement Learning
  • 【加解密与C】Base系列(六)Base100
  • 基于在线地图的路径规划测评对比-综合对比城区、农村及城乡结合处的导航
  • JavaScript进阶篇——第八章 原型链、深浅拷贝与原型继承全解析
  • 20250717 Ubuntu 挂载远程 Windows 服务器上的硬盘
  • Linux C 进程基本操作
  • 冒泡排序、选择排序、插入排序、快速排序
  • NLP——迁移学习
  • 【unity组件介绍】URP Decal Projector贴花投影器,将特定材质(贴花)投影到场景中的其他对象上。
  • RabbitMQ深度解析:从核心概念到实战应用
  • 【Android】EditText使用和监听
  • 聚观早报 | 英伟达股价再创新高;中国联通eSIM手机业务开通上线;中国AI加速出海 阿里云提供全栈能力支持
  • Linux之Zabbix分布式监控篇(二)
  • Flutter基础(前端教程①②-序列帧动画)
  • element-plus——图标推荐
  • 【JAVA新特性】Java 8 新特性实战
  • 网络安全威胁下的企业困境与破局技术实践
  • string + 栈 bitset 可达性统计(拓扑排序)
  • 浅探C语言的回调函数(Callback Function)
  • CD54.【C++ Dev】vector和list的反向迭代器的实现
  • 大语言模型Gemini Deep Research 全流程解读+使用攻略