卷积神经网络(CNN)中的批量归一化层(Batch Normalization Layer)
批量归一化层(BatchNorm层),或简称为批量归一化(Batch Normalization),是深度学习中常用的一种技术,旨在加速神经网络的训练并提高收敛速度。
一、基本思想
为了让数据在训练过程中保持同一分布,在神经网络的中间层(隐藏层)的一层或多层上进行批量归一化。对于每一个小批次数据(mini-batch),计算该batch的均值与方差,在将线性计算结果送入激活函数之前,先对计算结果进行批量归一化处理,即减均值、除标准差,保证计算结果符合均值为0、方差为1的标准正态分布,然后再将计算结果作为激活函数的输入值进行计算。这样可以使得网络中间层的输入保持相对稳定,有助于解决训练过程中的梯度消失或梯度爆炸问题。
批量归一化的本质:对于每个隐层神经元,把逐渐向非线性函数映射后向取值区间极限饱和区靠拢的输入分布强制拉回到均值为0方差为1的标准正态分布,使得非线性变换函数的输入值落入对输入比较敏感的区域。
一般而言,将数据转化为均值为0、方差为1的分布这一过程被称为标准化(Standardization),而归一化(Normalization)一般指的是将一列数据变化到某个固定区间(范围)中。
二、了解几个概念
1. 批次(batch)
神经网络处理数据,不是一个数据一个数据的处理,而是一次输入很大一个批次,比如99张图片,输入之后,再划分很多个批次,一次处理一个批次。
图1 神经网络中多批次数据输入
2. 均值与方差
在训练过程中,分批次训练,划分batch和batch_size,计算每一个批次(batch)的对应位置的均值和方差。如计算一个批次中所有图片的每一个位置的元素的均值与方差,一张图片有多少个元素,就有多少个均值与方差。最后得到的均值和方差是用向量的形式表现的。
图2 小批次中的计算机过程
例:一个batch有3个输入,每个输入是一个长度为4的向量
图3 归一化的均值计算
三、若干归一化要解决的问题
为什么要进行批量归一化,主要是在神经网络训练过程中,存在以下问题:
1. 协变量偏移
在机器学习中,一般假设模型输入数据的分布是稳定的,若是模型输入数据的分布发生变化,这种现象被称为协变量偏移(covariate shift);模型的训练集和测试集的分布不一致,也属于协变量偏移现象;同理,在一个复杂的机器学习系统中,也会要求系统的各个子模块在训练过程中输入分布是稳定的,若是不满足,则称为内部协变量偏移(internal covariate shift,ICS)。
图4 训练集和测试集的分布不一致导致的协变量偏移问题
2. 梯度消失问题
经过神经网络中多层的变换,很可能使得后面层的输入数据变得过大或过小,从而掉进激活函数(例如Sigmoid、Tanh)的饱和区。
图5 Sigmoid函数存在梯度消失问题
饱和区的梯度随x的变化y的变化很不明显,即会产生梯度消失问题,进而导致学习过程停止。为防止这个问题,我们希望,数据落入激活函数中间的非饱和区。为了降低内部协变量偏移所带来的负面影响,在训练过程中一般会采用非饱和型激活函数(ReLU)、精细的网络参数初始化,保守的学习率,但这不仅会使得网络的学习速度太慢,还会使得最终效果特别依赖于网络的初始化。
3. 梯度爆炸问题
梯度爆炸(Gradient Explosion)指的是在反向传播过程中,梯度值变得非常大,超出了网络的处理范围,从而导致权重更新变得不稳定甚至不收敛的现象。
图6 梯度爆炸问题
4. 过拟合问题
四、归一化的数学表达
对全连接层做批量归一化时。通常将批量归一化层置于全连接层中的仿射变换和激活函数之间。设全连接层的输入为u,权重参数和偏差参数分别为W和b,则批量归一化输入必由仿射变换x=Wu+b得到。
图7 全连接层结构
激活函数(sigmoid)为,设批量归一化的运算符为BN。那么,使用批量归一化的全连接层的输出为
。u是由多个小批量batch组成,其中一个batch由m个样本组成,仿射变换的输出为一个新的batch
,
正是批量归一化层的输入,中任意样本
,批量归一化层的输出
同样是d维向量。
归一化层的输出由以下几步求得。
1. 求小批量的均值
和方差
。
其中的平方计算是按元素求平方。
2. 标准化和归一化。
(1)标准化。使用按元素开方和按元素除法的方法对进行标准化。
这里是一个很小的常数,保证分母大于0。
(2)归一化。在上面标准化的基础上,批量归一化层引入了两个可以学习的模型参数,缩放(scale)参数和偏移(shift)参数
。这两个参数和
形状相同,皆为d维向量。
3. 计算批量归一化层的输出,参数
和参数
与
分别做按元素乘法(符号⊙)和加法计算:
至此,我们得到了的批量归一化的输出
。
注意:当和
,可学习的拉伸和偏移两个参数对归一化操作无益,即学出的模型可以不使用批量归一化。
五、工作流程
批量归一化可以看作是在每一层输入和上一层输出之间加入了一个新的计算层,对数据的分布进行额外的约束,来解决以上问题。
在训练过程中,批量归一化会对每个神经元(卷积核中的一个通道)的激活输入进行如下变换,具体实现步骤如下:
- 计算批量均值与方差:对于给定的小批量数据,计算其特征的均值与方差。
- 归一化:使用计算出的均值和方差对小批量数据中的每个特征进行归一化处理,确保输出的均值接近0,方差接近1。
- 缩放与偏移:引入缩放因子(γ)和偏移因子(β)两个可学习的参数,这两个参数是在训练过程中学习得到的,归一化后的数据会通过这两个参数进行缩放和偏移,允许模型恢复可能被归一化操作去除的有用特征。
其算法流程如图所示:
图8 归一化算法流程
在模型推理或测试时,均值和方差不再针对每个小批量实时计算,而是使用整个训练集的移动平均值。
六、作用与优势
1. 加速训练收敛:通过减小内部协变量偏移(Internal Covariate Shift),使得输入分布更加稳定,从而可以使用更高的学习率,加速训练收敛速度,减少训练时间,加速神经网络的训练过程。
2. 提高稳定性:批量归一化有助于控制梯度的变化范围,防止梯度爆炸或消失,从而提高训练的稳定性。
3. 提高模型性能:稳定的输入数据分布有助于模型学习到更加鲁棒的特征表示,从而提高模型的性能。
4. 减少过拟合:BatchNorm层也可以被看作一种正则化方法,因为它可以减少模型的过拟合风险。
5. 减少对权重初始化的依赖和敏感性:使得网络对权重初始化的依赖减小,简化了超参数的选择。即使初始化不是最优的,模型也能较好地收敛。
七、注意事项
在使用BatchNorm层时,需要注意选择合适的小批量大小(Batch Size),过小或过大的小批量都可能影响BatchNorm层的效果。BatchNorm层通常位于卷积层或全连接层之后,激活函数之前。但也有一些变种将BatchNorm层放在激活函数之后。在训练过程中,BatchNorm层会维护均值和方差的指数移动平均,以供推理阶段使用。因此,在训练结束后,需要保存这些移动平均值作为模型的一部分。
八、应用场景
批量归一化在神经网络中广泛应用,特别是在卷积神经网络(CNN)和全连接网络(FCN)中。当神经网络各层的输入数据分布发生变化时,例如训练过程中每个批次的数据分布不一致,这种情况下适合使用批量归一化来稳定网络的训练。
而在深度学习框架中,BatchNorm层通常作为一层(如BatchNorm层)来实现,可以轻松地集成到神经网络模型中。在训练阶段,BatchNorm层会根据小批量的统计信息来规范化输入数据;在推理(测试)阶段,BatchNorm层则使用训练过程中计算得到的移动平均均值和方差来规范化输入数据。
九、PyTorch实现
在PyTorch中,可以通过nn.BatchNorm1d、nn.BatchNorm2d和nn.BatchNorm3d等类来实现一维、二维和三维的批量归一化。以下是一个简单的示例,展示了如何在全连接神经网络中使用批量归一化:
pythonimport torchimport torch.nn as nnimport torch.optim as optimclass SimpleNN(nn.Module):def __init__(self, input_size, hidden_size, output_size):super(SimpleNN, self).__init__()self.fc1 = nn.Linear(input_size, hidden_size)self.bn1 = nn.BatchNorm1d(hidden_size)self.relu = nn.ReLU()self.fc2 = nn.Linear(hidden_size, output_size)def forward(self, x):out = self.fc1(x)out = self.bn1(out)out = self.relu(out)out = self.fc2(out)return out# 定义模型、损失函数和优化器model = SimpleNN(input_size=20, hidden_size=50, output_size=10)criterion = nn.CrossEntropyLoss()optimizer = optim.Adam(model.parameters(), lr=0.001)# 模拟训练过程for epoch in range(100):inputs = torch.randn(32, 20) # 小批量数据labels = torch.randint(0, 10, (32,)) # 标签# 前向传播outputs = model(inputs)loss = criterion(outputs, labels)# 反向传播和优化optimizer.zero_grad()loss.backward()optimizer.step()
在这个示例中,nn.BatchNorm1d用于对隐藏层的输出进行批量归一化,从而提高训练效率和稳定性。
相关文章:
卷积神经网络(CNN)中的批量归一化层(Batch Normalization Layer)
批量归一化层(BatchNorm层),或简称为批量归一化(Batch Normalization),是深度学习中常用的一种技术,旨在加速神经网络的训练并提高收敛速度。 一、基本思想 为了让数据在训练过程中保持同一分布…...
HDR视频技术之四:HDR 主要标准
HDR 是 UHD 技术中最重要维度之一,带来新的视觉呈现体验。 HDR 技术涉及到采集、加工、传输、呈现等视频流程上的多个环节,需要定义出互联互通的产业标准,以支持规模化应用和部署。本文整理当前 HDR 应用中的一些代表性的国际标准。 1 HDR 发…...
下一个阶段的生产工具更换:
开源竞争: 当你无法彻底掌握技术的时候,就开源这个技术,让更多的人了解这个技术,形成更多的技术依赖,你会说,这不就是在砸罐子吗?一个行业里面总会有人砸罐子的,你不如先砸罐子&…...
性能优化--CPU微架构
一 指令集架构 Intel X86, ARM v8, RISC-V 是当今广泛使用的指令架构的实例。 大多数现代架构可以归类为基于通用寄存器的加载和存储型架构,在这种架构下,操作数倍明确指定,只能使用夹在和存储指令访问内存。除提供基本的功能之外,…...
3.3_1 差错控制(检错编码)
目录 1、差错来源 全局性 局部性 2、数据链路的差错控制 编辑奇偶校验码 CRC循环冗余码 接收端检错过程 1、差错来源 概括来说,传输中的差错都是由于噪声引起的。 全局性 由于线路本身电气特性所产生的随机噪声(热噪声),是信道固有的…...
2024年wordpress、d-link等相关的多个cve漏洞poc
⚠️ 漏洞 ✅ CVE-2024-10914 在D-Link DNS-320、DNS-320LW、DNS-325和DNS-340L中发现的漏洞,版本直到20241028 GET /cgi-bin/account_mgr.cgi?cmdcgi_user_add&name%27;id;%27 HTTP/1.1✅ CVE-2024-11305 在Altenergy Power Control Software中发现的关键…...
影视后期学习Ⅰ~
1.DV是光盘 磁带 2.序列就是我们要制作的一个视频。 打开界面显示: 一号面板放的是素材,二号面板叫源监视器面板(它的名字需要记住)在一号面板点击文件之后,进入二号面板,在二号面板预览没问题后…...
如何安全删除 Linux 用户帐户和主目录 ?
Linux 以其健壮性和灵活性而闻名,是全球服务器和桌面的首选。管理用户帐户是系统管理的一个基本方面,包括创建、修改和删除用户帐户及其相关数据。本指南全面概述了如何在 Linux 中安全地删除用户帐户及其主目录,以确保系统的安全性和完整性。…...
【软件测试】设计测试用例的万能公式
文章目录 概念设计测试用例的万能公式常规思考逆向思维发散性思维万能公式水杯测试弱网测试如何进行弱网测试 安装卸载测试 概念 什么是测试用例? 测试⽤例(Test Case)是为了实施测试⽽向被测试的系统提供的⼀组集合,这组集合包…...
【MySQL】字符集与排序规则
1. 字符集 1.1 一些重要的字符集 1.1.1 ASCII 共收录128个字符,包括空格、标点符号、数字、大小写字母和一些不可见字符。由于总共才128个字符,所以可以使用1个字节来进行编码 1.1.2 ISO-8859-1 共收录 256 个字符,是在 ASCII 字符集的基…...
局域网与广域网:探索网络的规模与奥秘(3/10)
一、局域网的特点 局域网覆盖有限的地理范围,通常在几公里以内,具有实现资源共享、服务共享、维护简单、组网开销低等特点,主要传输介质为双绞线,并使用少量的光纤。 局域网一般是方圆几千米以内的区域网络,其特点丰富…...
C++从零到满绩——类和对象(中)
目录 1>>前言 2>>构造函数(我称之为初始化函数) 3>>析构函数(我称之为销毁函数) 4>>拷贝构造函数(我称之为复制函数) 5>>运算符重载 5.2>>赋值运算符重载 编辑…...
MFC工控项目实例三十一模拟量转化为工程量
实测工程量值(变送器量程最大值-变送器量程最小值)/(数字量最大值-数字量最小值)*(当前采集工程量值-零点误差值)。 相关程序代码 SEAL_PRESSURE.h class CSEAL_PRESSUREApp : public CWinApp { public:C…...
ESP32学习笔记_FreeRTOS(2)——Queue
摘要(From AI): 在嵌入式系统开发中,任务之间的高效通信是实现多任务协作的关键。FreeRTOS 提供了强大的队列机制,支持任务之间安全、灵活地传递数据,是实现任务同步和事件通知的核心工具。本篇博客将全面解析 FreeRTOS 队列的工作原理和应用…...
Project Manager工程管理器详细说明
1前言 STM32CubeMX的Project Manager工程管理器包含:Project工程管理、 Code Generator代码生成、 Advanced Settings高级设置三部分内容。 这三部分内容决定了工程的一些属性,相关的配置信息比较重要,也容易理解。初学者有必要掌握其中内容。 2Project工程管理 Project工…...
vue el-table表格点击某行触发事件操作栏点击和row-click冲突问题
文章为本新手菜鸡的问题记录,如有错误和不足还请大佬指正 文章目录 前言一、点击el-table表格某行,触发事件二、解决el-table的操作栏点击和row-click冲突问题1.问题:2.解决方法 前言 文章主要解决两个问题: 1、点击el-table表格…...
吸猫毛空气净化器哪个好?推荐除猫毛效果好的宠物空气净化器品牌
我家里养了五只猫咪,每天睡醒准备来杯咖啡的时候,总能看见猫毛。最尴尬的是这种现象,哪哪都有。养猫人真的每天都要生活在这个世界里面。平时和猫咪玩耍的时候也没有发现这么多猫毛啊。现在一到冬天不能开窗户,真的超级难受感觉每…...
Reactor 模式的理论与实践
1. 引言 1.1 什么是 Reactor 模式? Reactor 模式是一种用于处理高性能 I/O 的设计模式,专注于通过非阻塞 I/O 和事件驱动机制实现高并发性能。它的核心思想是将 I/O 操作的事件分离出来,通过事件分发器(Reactor)将事…...
VSCode 汉化教程【简洁易懂】
VSCode【下载】【安装】【汉化】【配置C环境(超快)】(Windows环境)-CSDN博客 我们安装完成后默认是英文界面。 找到插件选项卡,搜索“Chinese”,找到简体(更具你的需要)(…...
cookie反爬----普通服务器,阿里系
目录 一.常见COOKIE反爬 普通: 1. 简介 2. 加密原理 二.实战案例 1. 服务器响应cookie信息 1. 逆向目标 2. 逆向分析 2. 阿里系cookie逆向 1. 逆向目标 2. 逆向分析 实战: 无限debugger原理 1. Function("debugger").call() 2. …...
【计算机网络】计算机网络概述
当我们决定要谈谈网络的时候,我想在谈之前,有必要了解一下“协议”这个词。协议,定义了在俩个或者多个通信实体之间交换报文的格式和次序,以及报文发送、接收报文或者其他的事件所采取的动作。定义都比较晦涩,那就让我…...
微信小程序条件渲染与列表渲染的全面教程
微信小程序条件渲染与列表渲染的全面教程 引言 在微信小程序的开发中,条件渲染和列表渲染是构建动态用户界面的重要技术。通过条件渲染,我们可以根据不同的状态展示不同的内容,而列表渲染则使得我们能够高效地展示一组数据。本文将详细讲解这两种渲染方式的用法,结合实例…...
MySQL--存储引擎
目录 1 MySQL体系结构 2 存储引擎简介 3 存储引擎特点 3.1 InnoDB 3.1.1 介绍 3.1.2 特点 3.1.3 文件 3.2 逻辑存储结构 3.3 MyISAM 3.3.1 介绍 3.3.2 特点 3.3.3 文件 3.4 Memory 3.3.1 介绍 3.3.2 特点 3.3.3 文件 4 存储引擎选择 Innodb MyISAM MEMORY …...
洛谷 B2038:奇偶 ASCII 值判断
【题目来源】https://www.luogu.com.cn/problem/B2038http://shnoip.openjudge.cn/level1/39/【题目描述】 任意输入一个字符,判断其 ASCII 是否是奇数,若是,输出 YES,否则,输出 NO。 例如,字符 A 的 ASCII…...
软件测试面试之常规问题
1.描述一下测试过程 类似题目:测试的生命周期 思路:这是一个“范围”很大的题目,而且回答时间一般在3分钟之内,不可能非常详细的描述整个过程,因此答题的思路要从整体结构入手,不要过细。为了保证答案的准确性,可以引…...
Android 天气APP(三十七)新版AS编译、更新镜像源、仓库源、修复部分BUG
上一篇:Android 天气APP(三十六)运行到本地AS、更新项目版本依赖、去掉ButterKnife 新版AS编译、更新镜像源、仓库源、修复部分BUG 前言正文一、更新镜像源① 腾讯源③ 阿里源 二、更新仓库源三、修复城市重名BUG四、地图加载问题五、源码 前…...
网络性能及IO性能测试工具
文章目录 简介IO性能pidstatiostatfioblktrace 网络性能ipeftrek 简介 网络性能和IO性能测试工具在现代计算环境中至关重要。无论是评估网络带宽、优化数据传输速度,还是检测磁盘读写性能,选择适合的工具至关重要。本文将介绍各种网络性能和IO性能测试工…...
1+X应急响应(网络)常见网络攻击-SQL注入:
常见网络攻击-SQL注入: SQL注入概述: 动态网站的工作流程: SQL注入的起源: SQL典型的攻击手段: SQL注入的危害: SQL注入的函数: SQL注入类型: 提交方式分类: Get注入&am…...
流式上传与分片上传的原理与实现
🚀 博主介绍:大家好,我是无休居士!一枚任职于一线Top3互联网大厂的Java开发工程师! 🚀 🌟 在这里,你将找到通往Java技术大门的钥匙。作为一个爱敲代码技术人,我不仅热衷…...
基于深度学习CNN算法的花卉分类识别系统01--带数据集-pyqt5UI界面-全套源码
文章目录 基于深度学习算法的花卉分类识别系统一、项目摘要二、项目运行效果三、项目文件介绍四、项目环境配置1、项目环境库2、环境配置视频教程 五、项目系统架构六、项目构建流程1、数据集2、算法网络Mobilenet3、网络模型训练4、训练好的模型预测5、UI界面设计-pyqt56、项目…...
【数电】常见组合逻辑电路设计和分析
1.基于数据选择器设计 1.1卡诺图降维 1.2实例分析 1.2.1例题一 1.2.2例题二 1.2.2例题三 2.基于译码器设计 3.参考资料 1.《数字电子技术基础 第六版》 阎石王红 2.卡诺图的降维_哔哩哔哩_bilibili...
攻防世界-web ics-06 [解法思路]
进入环境 点击左边的列表只有报表中心有反应 注意看url直接就是index.php?id1 我先试了sqlmap不行,然后就沉淀了一下 想到了id后面的参数问题,我谁便改了几个数都没反应 就想着用bp抓包爆一下这个参数,用了一个数字10000的字典 发现2333…...
传智杯 3-初赛:终端
题目描述: 有一天您厌烦了电脑上又丑又没用的终端,打算自己实现一个 Terminal。具体来说,它需要支持如下命令: 1. touch filename:如果名为 filename 的文件不存在,就创建一个这样的文件,如果已经存在同名…...
《数据结构》学习系列——图(中)
系列文章目录 目录 图的遍历深度优先遍历递归算法堆栈算法 广度优先搜索 拓扑排序定义定理算法思想伪代码 关键路径基本概念关键活动有关量数学公式伪代码时间复杂性 图的遍历 从给定连通图的某一顶点出发,沿着一些边访问遍图中所有的顶点,且使每个顶点…...
网络安全,文明上网(2)加强网络安全意识
前言 在当今这个数据驱动的时代,对网络安全保持高度警觉已经成为每个人的基本要求。 网络安全意识:信息时代的必备防御 网络已经成为我们生活中不可或缺的一部分,信息技术的快速进步使得我们对网络的依赖性日益增强。然而,网络安全…...
Laravel对接SLS日志服务
Laravel对接SLS日志服务(写入和读取) 1、下载阿里云的sdk #通过composer下载 composer require alibabacloud/aliyun-log-php-sdk#对应的git仓库 https://github.com/aliyun/aliyun-log-php-sdk2、创建sdk请求的service <?phpnamespace App\Ser…...
Kafka 工作流程解析:从 Broker 工作原理、节点的服役、退役、副本的生成到数据存储与读写优化
Kafka:分布式消息系统的核心原理与安装部署-CSDN博客 自定义 Kafka 脚本 kf-use.sh 的解析与功能与应用示例-CSDN博客 Kafka 生产者全面解析:从基础原理到高级实践-CSDN博客 Kafka 生产者优化与数据处理经验-CSDN博客 Kafka 工作流程解析:…...
基于 Flink 的车辆超速监测与数据存储的小实战
基于 Flink 的车辆超速监测与数据存储的小实战 一、实战背景与目标 在智能交通管理领域,实时监控车辆行驶速度并精准识别超速行为对于保障道路交通安全和维护交通秩序具有至关重要的意义。本项目旨在构建一个高效的数据处理系统,能够从 Kafka 的 topic…...
Shell 脚本基础(7):重定向详解
内容预览 ≧∀≦ゞ Shell 脚本基础(7):重定向详解声明1. 重定向基础概念1.1 输出重定向(> 和 >>)覆盖写入(>)追加写入(>>)输出到终端和文件࿰…...
04. 流程控制
一、流程控制 流程控制就是用来控制程序运行中各语句执行顺序的语句。基本的流程结构为:顺序结构,分支结构(或称选择结构),循环结构。 顺序结构:程序自上到下执行,中间没有任何判断和跳转&…...
基于卡尔曼滤波器的 PID 控制
基于卡尔曼滤波器的PID控制算法结合了经典控制理论和现代信号处理技术。卡尔曼滤波器(Kalman Filter, KF)可以对噪声数据进行平滑处理,从而改善PID控制器的性能,特别是在处理具有噪声和不确定性的系统时。以下是详细的设计过程&am…...
基于信创环境的信息化系统运行监控及运维需求及策略
随着信息技术的快速发展和国家对信息安全的日益重视,信创环境(信息技术应用创新环境)的建设已成为行业发展的重要趋势。本指南旨在为运维团队在基于信创环境的系统建设及运维过程中提供参考,确保项目顺利实施并满足各项技术指标和…...
leetCode 283.移动零
题目 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0]示例 2: 输入: nums [0] 输出:…...
Kali Linux语言设置成中文
要将Kali Linux设置成中国地区(简体中文),可以按照以下步骤进行操作: 一、更新软件包列表 打开Kali Linux的终端。 输入以下命令来更新软件包列表: sudo apt-get update 二、安装语言包(如果有就不用安装了…...
c#窗体列表框(combobox)应用——省市区列表选择实例
效果如下: designer.cs代码如下: using System.Collections.Generic;namespace 删除 {public partial class 省市区选择{private Dictionary<string, List<string>> provinceCityDictionary;private Dictionary<string,List<string&…...
kali中信息收集的一些常用工具
这里只是代表个人所见,所以肯定会有其他的没提到,希望大家体谅 前言 信息收集分为主动和被动的 主动就是通过自己的机器去和对方比如通信后获得的数据 被动是指不是在自己这里获取的,可以是第三方平台获取到的,与目标没有通信 …...
【CS61A 2024秋】Python入门课,全过程记录P2(Week3开始,更新中2024/11/24)
文章目录 关于基本介绍👋Week 3Mon Environments阅读材料Lab 02: Higher-Order Functions, Lambda ExpressionsQ1: WWPD: The Truth Will PrevailQ2: WWPD: Higher-Order FunctionsQ3: WWPD: Lambda 关于 个人博客,里面偶尔更新,最近比较忙。…...
python学习笔记(8)算法(1)数组
一、数组 数组是存储于一个连续空间且具有相同数据类型的元素集合。若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号…...
C++(进阶) 第1章 继承
C(进阶) 第1章 继承 文章目录 前言一、继承1.什么是继承2.继承的使用 二、继承方式1.private成员变量的(3种继承方式)继承2. private继承方式3.继承基类成员访问⽅式的变化 三、基类和派生类间的转换1.切片 四、 继承中的作⽤域1.隐藏规则&am…...
【Linux | 计网】TCP协议详解:从定义到连接管理机制
目录 1.TCP协议的定义: 2.TCP 协议段格式 3.TCP两种通信方式 4.确认应答(ACK)机制 解决“后发先至”问题 5.超时重传机制 那么, 超时的时间如何确定? 6.连接管理机制: 6.1.三次握手: 为什么需要3次握手,一次两次不行吗…...