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

深度学习-卷积神经网络实战文档注释

1、call 方法
是一个特殊的方法,它允许类的实例表现得像函数一样。也就是说,你可以使用圆括号 () 来调用一个实例,就像调用普通函数一样。
当你调用 model(input_data) 时,实际上是调用了模型的 __ call __ 方法,其会自动调用 forward() 方法,完成前向传播的计算。而不需要(显示地)手动调用 model.forward(input_data)。
2、什么是卷积神经网络
卷积神经网络是一种带有卷积结构的深度神经网络,卷积结构可以减少深层网络占用的内存量,其三个关键的操作,其一是局部感受野,其二是权值共享,其三是 pooling 层,有效的减少了网络的参数个数,缓解了模型的过拟合问题。
3、卷积神经网络注意事项
数据驱动的模型一般依赖于数据集的大小,CNN 和其他经验模型一样,能够适用于任意大小的数据集,但用于训练的数据集应该足够大, 能够覆盖问题域中所有已知可能出现的问题。
4、正交初始化(Orthogonal Initialization)
是一种用于神经网络权重初始化的方法,旨在使权重矩阵具有正交性。正交矩阵的行或列是彼此正交并且单位化的,这种初始化方式有助于维持梯度的规模,防止在深度神经网络训练过程中发生梯度爆炸或消失。
正交初始化的具体实现步骤
生成随机矩阵:首先,从均值为0、方差为1的高斯分布中随机生成一个矩阵。
奇异值分解(SVD):对生成的随机矩阵进行奇异值分解(SVD),得到两个正交矩阵U和V,以及一个对角矩阵Σ。
选择正交矩阵:从U和V中选择一个作为初始化后的权重矩阵。通常选择形状与目标权重矩阵匹配的那个。
正太分布、均匀分布和正交分布都叫随机初始化
5、零值初始化
在零值初始化中,所有权重 W 和偏置 b 都被设置为零:
W=0,b=0
零值初始化的问题
对称性问题:
如果所有权重都初始化为零,那么在训练过程中,所有神经元的输出和梯度更新都会相同。这导致模型无法有效学习,因为所有的隐含单元都计算相同的函数,这种情况称为对称性问题(Symmetry Breaking Problem)。
例如,对于一个简单的神经网络,如果所有权重都初始化为零,那么每个神经元的输入和输出在每一层都会相同,梯度更新也会相同,从而无法打破对称性。
梯度消失问题:
由于所有初始值都为零,梯度在反向传播过程中也会非常小,这可能导致梯度消失问题,使得模型难以收敛。
6、如何选择激活函数
(1)任选其一:若网络层数不多
(2)ReLU:若网络层数较多
不宜选择sigmoid、tanh,因为它们的导数都小于1,sigmoid的导数更是在[0, 1/4]之间。
根据微积分链式法则,随着网络层数增加,导数或偏导将指数级变小。
所以,网络层数较多的激活函数其导数不宜小于1也不能大于1,大于1将导致梯度爆炸,导数为1最好,而relu正好满足这个要求。
7、全局平均池化
常用于卷积神经网络的末端,以替代传统的全连接层,减少模型的参数量,简化网络结构,提高计算效率
8、正则化为啥能够防止过拟合
首先,模型越复杂,越容易过拟合,即我们想要拟合的是一般规律,但是模型却会把一些噪声也拟合进来。
其次,权重参数可以决定模型复杂度,当很多参数接近0(影响变小),甚至为0时,模型的很多项将失效,可以借助多项式理解,复杂度自然降低。
最后,正则化项可以让很多权重参数为0,比如L2正则化项,它是由权重参数的平方求和再求平方根,所以为了让损失函数最小,受到正则化项的惩罚,权重参数就会尽量小。
8.1 L1正则化
形式为参数的绝对值求和再乘以一个正则化超参数
目的是使冗余的参数置零,只保留权重大的前N个参数。所以也叫做特征选择。
8.2 L2正则化
L2正则化(权重衰减) —— 过拟合参数趋近于0
L2正则化(L2范数),通常表示为:||W||2:指权值向量 W 中各个元素的平方和,然后求平方根。
特点:又叫权重衰减。即抑制模型中产生过拟合的参数,使其趋近于0(而不等于0),影响变小。
特点:倾向于让所有参数的权值尽可能小。
8.3 dropout正则化
对于使用了 Dropout 的神经网络,在反向传播时,只会对参与正向传播的神经元的权重参数进行更新,被丢弃的神经元的权重参数不会更新。以下是具体的原因和过程:
Dropout 的工作原理
在训练过程中,Dropout 随机地丢弃(即置零)一部分神经元的输出。这意味着在每次前向传播时,有一部分神经元的输出被置为零,这些神经元在当前的前向传播中不参与计算。
反向传播的链式法则
反向传播是基于链式法则进行的。链式法则表明,每个权重参数的梯度是通过其对应的神经元的输出和下游神经元的梯度计算得到的。如果一个神经元的输出在前向传播中被置为零,那么在反向传播时,这个神经元的梯度也会被置为零,因为它的输出对最终的损失函数没有贡献。
权重参数的更新
在反向传播时,每个权重参数的更新量是根据其梯度计算得到的。如果一个神经元的梯度为零,那么其对应的权重参数的更新量也为零,即这个权重参数不会被更新。
在卷积层中的应用
在 CNN 中,卷积层的输出是一个多维的特征图(feature map)。Dropout 在卷积层中的应用通常有两种形式:标准 Dropout 和 Spatial Dropout。
标准 Dropout
工作原理:
标准 Dropout 会在特征图的每个元素上独立地应用 Dropout。也就是说,每个特征图中的每个像素点都有一定的概率被置为零。
例如,假设有一个特征图的形状为 (N,C,H,W),其中 N 是批量大小,C 是通道数,H 和 W 是特征图的高度和宽度。标准 Dropout 会在每个元素上独立地应用 Dropout,每个元素被丢弃的概率为 p。
实现:
在 PyTorch 中,可以使用 nn.Dropout 来实现标准 Dropout。
self.dropout = nn.Dropout(p=0.5)
Spatial Dropout
工作原理:
Spatial Dropout 与标准 Dropout 不同,它是在特征图的整个通道上应用 Dropout。也就是说,整个通道的特征图要么全部保留,要么全部丢弃。
例如,假设有一个特征图的形状为 (N,C,H,W),Spatial Dropout 会在每个通道上独立地应用 Dropout,每个通道被丢弃的概率为 p。
这种方法可以更好地保留特征图的空间结构,因为整个通道的特征图要么全部保留,要么全部丢弃,不会破坏特征图的空间相关性。
实现:
在 PyTorch 中,可以使用 nn.Dropout2d 来实现 Spatial Dropout。
self.dropout = nn.Dropout2d(p=0.5)
参考
https://blog.csdn.net/shinuone/article/details/127289512
https://blog.csdn.net/jiaoyangwm/article/details/80011656

相关文章:

深度学习-卷积神经网络实战文档注释

1、call 方法 是一个特殊的方法,它允许类的实例表现得像函数一样。也就是说,你可以使用圆括号 () 来调用一个实例,就像调用普通函数一样。 当你调用 model(input_data) 时,实际上是调用了模型的 __ call __ 方法,其会自…...

GR2103高压半桥栅极驱动芯片

产品简介 GR2103封装和丝印 GR2103是一款高性价比的高压半桥栅极驱动专用芯片,设计用于高压、高速驱动N型大功率 MOS管、IGBT管。内置欠压(UVLO)保护功能,防止功率管在过低的电压下工作,提高效率。内置防止直通功能…...

学习threejs,使用OrbitControls相机控制器

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.OrbitControls 相机控…...

说说Babylon.js中scene.deltaTime的大坑

诡异的问题 下面是给一个材质设置发光颜色周期变化和纹理偏移的代码,你能感觉到这里面可能出现的问题吗? var passTime 0;var uOffset 0;var deltaTime 0;function SetEmissiveColor() {passTime scene.deltaTime * 0.05;if(passTime > 6.2…...

【React】win系统环境搭建

动图更精彩 方案如下 在Visual Studio Code(VSCode)中搭建React开发环境是一个相对简单但非常重要的步骤,可以帮助你更高效地进行前端开发。以下是详细的步骤和配置指南: 一、准备工作 安装Visual Studio Code (VSCode)&#x…...

ThinkPHP 8的一对一关联

【图书介绍】《ThinkPHP 8高效构建Web应用》-CSDN博客 《2025新书 ThinkPHP 8高效构建Web应用 编程与应用开发丛书 夏磊 清华大学出版社教材书籍 9787302678236 ThinkPHP 8高效构建Web应用》【摘要 书评 试读】- 京东图书 使用VS Code开发ThinkPHP项目-CSDN博客 编程与应用开…...

Linux 下配置 Golang 环境

go sdk 下载环境:https://golang.google.cn/dl/选择对应的版本: 使用 wget 直接拉包下载到服务器中 wget https://golang.google.cn/dl/go1.23.4.linux-amd64.tar.gz如果找不到 wget 命令,yum 下载 wget yum -y install wget配置 go 的环境…...

爬虫后的数据处理与使用(使用篇--实现分类预测)

()紧接上文,在完成基本的数据处理后,接下来就是正常的使用了。当然怎么用,确实需要好好思考一下~ 上文:爬虫后的数据处理与使用(处理篇) 前言: 一般来说,我…...

arcgis提取不规则栅格数据的矢量边界

效果 1、准备数据 栅格数据:dem或者dsm 2、栅格重分类 分成两类即可 3、新建线面图层 在目录下选择预先准备好的文件夹,点击右键,选择“新建”→“Shapefile”,新建一个Shapefile文件。 在弹出的“新建Shapefile”对话框内“名称”命名为“折线”,“要素类型”选…...

python milvus 如何检查有多少个collection 以及多少个index,多少个database

在 Milvus 中,可以通过 Python 客户端(`pymilvus`)来检查当前有多少个集合(Collection)、索引(Index)和数据库(Database)。以下是具体的方法: --- ### 1. 检查有多少个集合(Collection) 使用 `list_collections()` 方法可以列出当前连接的所有集合。 ```python…...

2006-2020年各省工业增加值数据

2006-2020年各省工业增加值数据 1、时间:2006-2020年 2、来源:国家统计局、统计年鉴 3、指标:行政区划代码、地区名称、年份、工业增加值 4、范围:31省 5、指标解释:工业增加值是指工业企业在一定时期内以货币形式…...

【MySQL】使用C语言链接

🌈 个人主页:Zfox_ 🔥 系列专栏:MySQL 目录 一:🔥 MySQL connect 🦋 Connector / C 使用🦋 mysql 接口介绍🦋 完整代码样例 二:🔥 共勉 一&#…...

Vue篇-07

Vue UI组件库 一、移动端常用的UI组件库 1.1、Vant 1.2、Cube UI 1.3、Mint UI 二、PC端常用的UI组件库 2.1、Element UI Element - The worlds most popular Vue UI framework 安装: 按需引入: 135_尚硅谷Vue技术_element-ui按需引入_哔哩哔哩_b…...

使用 LLaMA-Factory 微调大模型

本文将介绍如下内容: 一、搭建 Docker Container 环境二、配置大模型训练环境三、构建、配置数据集四、训练大模型 一、搭建 Docker Container 环境 笔者此前多篇文章说明,此处不再赘述,可参考:NGC容器中快速搭建Jupyter环境 E…...

数据仓库的复用性:模型层面通用指标体系、参数化模型、版本化管理

在数据仓库设计中,复用性 是一个关键原则,它不仅能提升数据资产的使用效率,还能降低开发成本、优化系统运维。下面将从 模型层面的复用性、通用指标体系、参数化模型、版本化管理 四个方面进行详细介绍,并提供可落地的设计方案。 …...

Web APP 阶段性综述

Web APP 阶段性综述 当前,Web APP 主要应用于电脑端,常被用于部署数据分析、机器学习及深度学习等高算力需求的任务。在医学与生物信息学领域,Web APP 扮演着重要角色。在生物信息学领域,诸多工具以 Web APP 的形式呈现&#xff…...

某国际大型超市电商销售数据分析和可视化

完整源码项目包获取→点击文章末尾名片! 本作品将从人、货、场三个维度,即客户维度、产品维度、区域维度(补充时间维度与其他维度)对某国际大型超市的销售情况进行数据分析和可视化报告展示,从而为该超市在弄清用户消费…...

电子杂志制作平台哪个好

​作为一个热爱分享的人,我试过了好几个平台,终于找到了几款比较好用得电子杂志制作平台,都是操作界面很简洁,上手非常快的工具。 FLBOOK:这是一款在线制作H5电子画册软件,提供了各种类型的模板,可支持添加…...

Django Admin 实战:实现 ECS 集群批量同步功能

引言 在管理大规模 AWS ECS (Elastic Container Service) 集群时,保持本地数据库与 AWS 实际状态的同步是一项关键任务。手动更新既耗时又容易出错,因此自动化这个过程变得尤为重要。本文将介绍如何利用 Django Admin 的自定义动作功能来实现 ECS 集群的批量同步操作,从而大…...

虚拟拨号技术(GOIP|VOIP)【基于IP的语音传输转换给不法分子的境外来电披上一层外衣】: Voice over Internet Protocol

文章目录 引言I 虚拟拨号技术(GOIP|VOIP)原理特性:隐蔽性和欺骗性II “GOIP”设备原理主要功能III 基于IP的语音传输 “VOIP” (Voice over Internet Protocol)IV “断卡行动”“断卡行动”目的电信运营商为打击电诈的工作V 知识扩展虚拟号保护隐私虚拟运营商被用于拨打骚扰…...

迅为RK3576开发板Android 多屏显示

迅为iTOP-3576开发板采用瑞芯微RK3576高性能、低功耗的应用处理芯片,集成了4个Cortex-A72和4个Cortex-A53核心,以及独立的NEON协处理器。它适用于ARM PC、边缘计算、个人移动互联网设备及其他多媒体产品。 1.1 Android 多屏同显 iTOP-RK3576 开发板支持…...

cmake + vscode + mingw 开发环境配置

1.软件准备 准备如下软件: mingw64(安装完成之后检测是否有环境变量,如果没有需要配置) cmake(安装完成之后检测是否有环境变量,如果没有需要配置) vscode(安装CMake插件&#xff0…...

nginx 配置代理,根据 不同的请求头进行转发至不同的代理

解决场景:下载发票的版式文件,第三方返回的是url链接地址,但是服务是部署在内网环境,无法访问互联网进行下载。此时需要进行走反向代理出去,如果按照已有套路,就是根据不同的访问前缀,跳转不同的…...

类模板的使用方法

目录 类模板的使用方法 1.类模板语法 2.类模板和函数模板区别 3.类模板中成员函数创建时机 4.类函数对象做函数参数 5.类模板和继承 6.类模板成员函数类外实现 7.类模板分文件编写 person.hpp 实现cpp文件: 8.类模板与友元 9.类模板案例 MyArray.hpp …...

高级Python Web开发:FastAPI的前后端集成与API性能优化

高级Python Web开发:FastAPI的前后端集成与API性能优化 目录 🛠️ 前后端集成的基本原理与实践🚀 FastAPI的API设计与实现📈 API性能测试与负载测试 📊 使用Locust进行API性能测试💥 使用Apache JMeter进…...

期权懂|期权的溢价率和杠杆率有什么区别?

锦鲤三三每日分享期权知识,帮助期权新手及时有效地掌握即市趋势与新资讯! 期权的溢价率和杠杆率有什么区别? 一、定义篇 期权溢价率:这是一个细腻地描绘了期权价格与其内在价值之间微妙差异的指标。想象一下,期权价格就…...

分布式ID的实现方案

1. 什么是分布式ID ​ 对于低访问量的系统来说,无需对数据库进行分库分表,单库单表完全可以应对,但是随着系统访问量的上升,单表单库的访问压力逐渐增大,这时候就需要采用分库分表的方案,来缓解压力。 ​…...

Py之cv2:cv2(OpenCV,opencv-python)库的简介、安装、使用方法(常见函数、图像基本运算等)

1. OpenCV简介 1.1 OpenCV定义与功能 OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库。它为计算机视觉应用程序提供了一个通用的基础设施,并加速了在商业产品中使用机器感知。作为BSD许可的产品&…...

如何学习网络安全?有哪些小窍门?

学好网络安全其实没有所谓的捷径,也没有什么小窍门。 入门网络安全首先要有浓厚的学习兴趣,不然很容易就变成了从入门到放弃了。 其次要能静下心,踏踏实实的打好基础。如果你是零基础,建议从Web安全入手,课程难度相对…...

Dart语言的数据结构

Dart语言中的数据结构探讨 引言 Dart是一种现代化的编程语言,主要用于构建移动应用、Web应用和服务端应用。随着应用程序的复杂性日益增加,选择合适的数据结构显得尤为重要。数据结构不仅影响程序的性能,也影响程序的可维护性和可扩展性。本…...