机器学习6-全连接神经网络2
机器学习6-全连接神经网络2-梯度算法改进
- 梯度下降算法存在的问题
- 动量法与自适应梯度
- 动量法
- 一、动量法的核心思想
- 二、动量法的数学表示
- 三、动量法的作用
- 四、动量法的应用
- 五、示例
- 自适应梯度与RMSProp
- 权值初始化
- 随机权值初始化
- Xavier初始化
- HE初始化(MSRA) 
- 总结
- 批归一化
- 一、原理
- 二、应用
- 三、优缺点
- 批归一化算法
- 批归一化算法解释
梯度下降算法存在的问题
仅增大步长并不能加快算法收敛速度
梯度下降算法是一种常用的优化算法,用于求解函数的最小值或最大值,尤其在机器学习和深度学习中应用广泛。然而,该算法也存在一些问题,以下是对这些问题的详细归纳:
- 局部最优解
问题描述:梯度下降算法可能会陷入局部最优解,而无法找到全局最优解。这是因为梯度下降算法只能保证找到当前位置的下降方向,而无法保证是否能够到达全局最优解。
影响:在非凸函数中,由于存在多个局部最优解,梯度下降算法很容易陷入其中某一个,导致无法找到全局最优解。 - 学习率选择
问题描述:梯度下降算法中的学习率决定了每次迭代中参数更新的步长。如果学习率选择不合适,可能会导致算法收敛过慢或者无法收敛。
影响:学习率过大可能导致算法在最优解附近震荡,甚至无法收敛;学习率过小则会导致算法收敛速度过慢,需要更多的迭代次数才能达到收敛。 - 特征缩放
问题描述:当特征之间的尺度差异较大时,梯度下降算法可能会收敛缓慢。这是因为梯度下降算法在更新参数时是基于梯度的大小来确定步长的,如果特征之间的尺度差异较大,梯度的大小也会有很大差异,导致参数更新不均匀。
影响:特征缩放问题会使得梯度下降算法的收敛路径变得曲折,增加收敛时间和计算成本。 - 高维问题
问题描述:在高维问题中,梯度下降算法需要计算大量的梯度,计算量较大,收敛速度较慢。此外,高维问题中容易出现维度灾难,即样本稀疏性增加,导致模型过拟合。
影响:高维问题中的梯度下降算法面临巨大的计算挑战,同时可能由于样本稀疏性导致模型性能下降。 - 算法变种的选择与适用性
问题描述:虽然梯度下降算法有多种变种,如随机梯度下降(SGD)、小批量梯度下降等,但每种变种都有其适用的场景和限制。
影响:选择不合适的算法变种可能导致算法性能不佳,甚至无法收敛。例如,SGD虽然可以加快计算速度,但可能由于每次更新只使用一个样本而导致算法在优化路径上震荡。
针对以上问题,可以采取一些改进措施来提高梯度下降算法的性能。例如,对于局部最优解问题,可以尝试使用动量法、自适应学习率方法或二阶优化方法来跳出局部最优解;对于学习率选择问题,可以采用逐渐减小学习率、自适应学习率调整或网格搜索等方法来找到合适的学习率;对于特征缩放问题,可以进行特征标准化或归一化处理来缩小特征之间的尺度差异;对于高维问题,可以尝试使用降维技术或稀疏优化方法来减少计算量和提高模型性能。
梯度下降算法虽然是一种有效的优化算法,但在实际应用中需要注意其存在的问题并采取相应的改进措施来提高算法的性能和稳定性。
动量法与自适应梯度
动量法
动量法(Momentum)是一种优化算法,旨在加速梯度下降法的收敛,尤其是在存在高曲率、嘈杂梯度或小但一致梯度的情况下。
一、动量法的核心思想
动量法通过引入动量概念,使得参数更新不仅依赖于当前的梯度,还考虑了之前梯度的累计效果。这样可以加速收敛并减少参数更新时的震荡。具体来说,动量法引入了一个动量项(通常表示为v或vt),该动量项记录了之前几步的梯度更新情况,并根据这些信息调整当前的参数更新方向和幅度。
二、动量法的数学表示
在动量法中,通常使用以下公式来更新参数和动量项:
- 更新动量项:vt=βvt−1−α∇θJ(θ),其中vt表示第t次迭代的动量,β为动量系数(通常取值在0.9到0.99之间),α为学习率,∇θJ(θ)表示目标函数J(θ)关于参数θ的梯度。
- 更新参数:θ=θ+vt,其中θ表示需要更新的参数。
注意,上述公式中的符号可能因不同的文献或框架而有所差异,但核心思想是一致的。
三、动量法的作用
- 加速收敛:通过引入动量项,动量法可以使参数在更新过程中保持一定的惯性,从而加速收敛。
- 减少震荡:动量项可以平滑参数更新的轨迹,减少在更新过程中出现的震荡。
四、动量法的应用
动量法广泛应用于各种机器学习和深度学习模型中,特别是在训练神经网络时。通过使用动量法,可以更有效地优化模型的参数,提高模型的性能和稳定性。
在PyTorch等深度学习框架中,可以通过设置优化器的动量系数来使用动量法。例如,在使用SGD(随机梯度下降)优化器时,可以通过设置momentum
参数来启用动量法。
五、示例
假设有一个简单的线性回归模型,其目标函数为J(θ)=(h(θ)−y)2,其中h(θ)=θ0+θ1x为模型的预测值,y为真实值。我们可以使用动量法来优化这个模型的参数θ0和θ1。
在每次迭代中,我们首先计算目标函数关于参数的梯度,然后更新动量项和参数。通过多次迭代,我们可以逐渐找到使目标函数最小的参数值。
动量法是一种有效的优化算法,通过引入动量项来加速梯度下降法的收敛并减少震荡。它在机器学习和深度学习领域具有广泛的应用前景。
自适应梯度与RMSProp
权值初始化
全零初始化:网络中不同的神经元有相同的输出,进行同样的参数更新; 因此,这些神经元学到的参数都一样,等价于一个神经元。
建议:采用随机初始化,避免全零初始化!
随机权值初始化
- 参数无法传递都后续层
- 梯度无法反向传递回前一层
实验结论: 初始化时让权值不相等,并不能保证网络能够正常的有效的初始化方法:使网络各层的激活值和局部梯度的方差在传播过程中尽量保持一致;以保持网络中正向和反向数据流动。
Xavier初始化
也就是将权重1,平均给每个输入即N个输入时,每个输入的权值就是w=1/N
HE初始化(MSRA) 
总结
- 好的初始化方法可以防止前向传播过程中的信息消失,也可以解决反向传递过程中的梯度消失。
- 激活函数选择双曲正切或者Sigmoid时,建议使用Xaizer初始化方法;
- 激活函数选择ReLU或Leakly ReLU时,推荐使用He初始化方法。
批归一化
机器学习中的批归一化(Batch Normalization,简称BN)是一种重要的技术,尤其在深度学习中应用广泛。以下是对批归一化的原理、应用以及优缺点的详细分析:
一、原理
批归一化的核心思想是在每一层神经网络的输入或输出上进行规范化处理,即对每批次数据的激活值进行标准化操作,使得其均值为0,方差为1。具体来说,批归一化的数学表述可以概括为两个主要步骤:标准化和重参数化。
-
标准化:对于每一个训练批次的输入数据X,首先计算其均值μ和方差σ²,然后将数据进行标准化变换,使其具有零均值和单位方差。其中,ε是一个很小的正值,用于防止分母为零。标准化公式为:
[ X ′ = X − μ σ 2 + ϵ X'=\frac{X-\mu}{\sqrt{\sigma^2+\epsilon}} X′=σ2+ϵX−μ]
-
重参数化:经过标准化后的数据z,通过两个可学习的参数γ和β进行缩放和平移,恢复模型的表达能力。其中,γ是对数据尺度的控制,β则是对数据位置的调整。重参数化公式为:
[ y = γ X ′ + β y=\gamma X'+\beta y=γX′+β]
二、应用
批归一化在深度学习中的应用非常广泛,特别是在计算机视觉、语音识别、自然语言处理等领域。以下是几个具体的应用场景:
- 计算机视觉:在图像识别任务上,批归一化被证明对复杂深度卷积神经网络(CNN)的训练至关重要。例如,在Inception系列模型和ResNet(残差网络)架构中,批归一化层被嵌入到卷积层之间,显著加快了模型收敛速度,同时减少了训练过程中的内部协变量偏移问题,进而提升了模型在大型数据集上的表现。
- 语音识别:在语音识别任务中,批归一化同样发挥了重要作用,有助于提升模型的识别准确性和训练效率。
- 自然语言处理:虽然批归一化在计算机视觉领域取得了显著成效,但在自然语言处理任务中,由于其依赖于批量大小,可能不如其他归一化方法(如层归一化)有效。然而,批归一化仍然在某些NLP任务中被采用,并表现出一定的性能提升。
三、优缺点
优点:
- 解决内部协变量偏移问题:批归一化通过规范化每层的输入或输出,减少了内部协变量偏移问题,从而加速了模型训练。
- 改善模型泛化能力:批归一化具有一定的正则化效果,可以减少过拟合现象,提高模型的泛化能力。
- 允许使用更大的学习率:由于批归一化稳定了模型的训练过程,因此可以使用更大的学习率来进一步提升训练速度。
- 降低对初始化权重的敏感性:批归一化减少了模型对初始化权重的依赖性,使得模型更容易训练。
在神经网络训练过程中,梯度消失是一个常见的问题,它通常发生在网络较深时,由于反向传播算法中梯度的累积效应,靠近输入层的网络层权重更新变得非常缓慢,几乎接近于零,这就是所谓的梯度消失。梯度消失会导致模型训练效果不佳,因为浅层网络的权重无法得到有效更新。
批归一化是一种有效的技术,用于缓解梯度消失问题。它通常被插入到全连接层(FC)之后,非线性激活函数(如tanh)之前。批归一化的主要作用是标准化每层的输入,即使这些输入在训练过程中发生变化,也能保持它们的分布相对稳定。具体来说,批归一化通过计算每个批次数据的均值和方差,然后对每个元素进行减均值和除方差的操作,来标准化该批次的数据。
标准化后的数据具有零均值和单位方差,这使得非线性激活函数的输入更加集中在激活函数的敏感区域,从而增强了梯度的传递。在tanh等非线性激活函数中,输入值靠近零时梯度较大,而远离零时梯度较小。批归一化通过将输入值标准化到零附近,使得激活函数的梯度保持在较大的范围内,从而缓解了梯度消失的问题。
此外,批归一化还通过引入可学习的参数γ和β,允许网络自适应地调整数据的尺度和位置,从而恢复了模型的表达能力。这些参数在训练过程中会被学习并调整,以确保模型能够捕捉到数据的复杂特征。
综上所述,批归一化通过标准化每层的输入,增强了梯度的传递,并使得非线性激活函数的输入更加集中在敏感区域,从而有效地缓解了梯度消失问题。这有助于提高神经网络的训练效率和性能。
缺点:
-
依赖于批量大小:批归一化的效果在一定程度上依赖于批量大小。当批量较小时,统计特性可能不够稳定,导致模型性能下降。
-
推理阶段需要调整:在推理阶段,由于没有足够的数据来进行精确的均值和方差估计,需要采用移动平均等方法进行近似,这可能会引入一定的误差。
-
不适用于所有任务:批归一化在某些任务(如生成对抗网络GANs)中可能并不适用,因为这些任务需要保持数据分布的多样性。
综上所述,批归一化在机器学习中具有显著的优势和广泛的应用前景,但同时也存在一些局限性。在实际应用中,需要根据具体任务和数据特点选择合适的归一化方法。
批归一化算法
根据您提供的图片理解信息和图片中的文字文本,我将为您解释批归一化算法:
批归一化算法解释
输入:
- 小批量数据集合 B = { x 1 , x 2 , . . . , x m } B = \{x_1, x_2, ..., x_m\} B={x1,x2,...,xm},其中 x i x_i xi 表示第 i i i 个样本的数据。
学习参数:
- γ \gamma γ(在您的图片理解信息中未提及,但通常在批归一化算法中包含此参数,用于缩放归一化后的数据)
- β \beta β(平移参数,用于在归一化后的数据上添加一个常数,以实现数据增强效果)
输出:
- 归一化并经过平移缩放后的数据集合 { y 1 , y 2 , . . . , y m } \{y_1, y_2, ..., y_m\} {y1,y2,...,ym}。
步骤:
-
计算小批量均值:
[ μ B ← 1 m ∑ i = 1 m x i \mu_B \leftarrow \frac{1}{m} \sum_{i=1}^{m} x_i μB←m1∑i=1mxi]
这一步是计算小批量数据集合 B B B 的平均值 μ B \mu_B μB。 -
计算小批量方差:
[ σ B 2 ← 1 m ∑ i = 1 m ( x i − μ B ) 2 \sigma_B^2 \leftarrow \frac{1}{m} \sum_{i=1}^{m} (x_i - \mu_B)^2 σB2←m1∑i=1m(xi−μB)2]
这一步是计算小批量数据集合 B B B 的方差 σ B 2 \sigma_B^2 σB2。注意,您的图片中的文字文本中此步骤的公式表示有误(应为 ( x i − μ B ) 2 (x_i - \mu_B)^2 (xi−μB)2 而非 ( x - μ B ) ² (x-\mu_B)^² (x-μB)²),且公式前的序号应为2。 -
归一化:
[ x ^ i ← x i − μ B σ B 2 + ϵ \hat{x}_i \leftarrow \frac{x_i - \mu_B}{\sqrt{\sigma_B^2 + \epsilon}} x^i←σB2+ϵxi−μB]
这一步是将每个样本 x i x_i xi 归一化到0到1之间。注意,这里通常还会加上一个很小的常数 ϵ \epsilon ϵ(防止分母为零)来保持数值稳定性。然而,您的图片中的文字文本中此步骤的公式表示不完全准确(缺少分母中的 ⋅ \sqrt{\cdot} ⋅ 和 ϵ \epsilon ϵ),且公式前的序号应为3(但通常不会单独列出这一步的序号,而是作为归一化过程的一部分)。 -
平移缩放:
[ y i ← γ x ^ i + β y_i \leftarrow \gamma \hat{x}_i + \beta yi←γx^i+β]
这一步是将归一化后的数据 x ^ i \hat{x}_i x^i 进行平移缩放,以恢复数据的表达能力。其中, γ \gamma γ 是缩放参数(在您的图片理解信息中未提及,但它是批归一化算法的一部分), β \beta β 是平移参数。
综上所述,批归一化算法通过计算小批量数据的均值和方差来归一化数据,并通过平移缩放操作来恢复数据的表达能力。这种技术有助于加速训练过程、提高模型的泛化能力并减少对初始化权重的依赖。
另外,您的图片中的文字文本中提到了“CSDN @郑同学ZXC”,这可能是该图片或文本内容的来源或作者信息,与批归一化算法的解释无直接关系。
-
问题:输出的0均值1方差的正态分布是最有利于网络分类的分布吗?
-
答:根据对分类的贡献自行决定数据分布的均值与方差。
-
问题:单张样本测试时,均值和方差怎么设置?
-
回答:来自于训练中。累加训练时每个批次的均值和方差,最后进行平均,用平均后的结果作为预测时的均值和方差。
相关文章:

机器学习6-全连接神经网络2
机器学习6-全连接神经网络2-梯度算法改进 梯度下降算法存在的问题动量法与自适应梯度动量法一、动量法的核心思想二、动量法的数学表示三、动量法的作用四、动量法的应用五、示例 自适应梯度与RMSProp 权值初始化随机权值初始化Xavier初始化HE初始化(MSRA) 
基于 SpringBoot 的电影购票系统
基于SpringBoot的电影购票系统是一个集成了现代化Web开发技术的在线电影票务平台。以下是对该系统的详细介绍: 一、系统背景与意义 随着电影行业的快速发展和观众对观影体验的不断追求,电影票务管理面临着越来越多的挑战。传统的票务管理方式存在效率低…...
C++SLT(三)——list
目录 一、list的介绍二、list的使用list的定义方式 三、list的插入和删除push_back和pop_backpush_front和pop_frontinserterase 四、list的迭代器使用五、list的元素获取六、list的大小控制七、list的操作函数sort和reversemergeremoveremove_ifuniqueassignswap 一、list的介…...

C++ Primer 算术运算符
欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…...

数据结构-堆和PriorityQueue
1.堆(Heap) 1.1堆的概念 堆是一种非常重要的数据结构,通常被实现为一种特殊的完全二叉树 如果有一个关键码的集合K{k0,k1,k2,...,kn-1},把它所有的元素按照完全二叉树的顺序存储在一个一维数组中,如果满足ki<k2i…...

【玩转 Postman 接口测试与开发2_017】第13章:在 Postman 中实现契约测试(Contract Testing)与 API 接口验证(下)
《API Testing and Development with Postman》最新第二版封面 文章目录 第十三章 契约测试与 API 接口验证8 导入官方契约测试集合9 契约测试集合的详细配置9.1 env-apiKey 的创建与设置9.2 env-workspaceId 的设置9.3 Mock 服务器及 env-server 的配置9.4 API 测试实例的配置…...

R语言 | 使用 ComplexHeatmap 绘制热图,分区并给对角线分区加黑边框
目的:画热图,分区,给对角线分区添加黑色边框 建议直接看0和4。 0. 准备数据 # 安装并加载必要的包 #install.packages("ComplexHeatmap") # 如果尚未安装 library(ComplexHeatmap)# 使用 iris 数据集 #data(iris)# 选择数值列&a…...

React图标库: 使用React Icons实现定制化图标效果
React图标库: 使用React Icons实现定制化图标效果 图标库介绍 是一个专门为React应用设计的图标库,它包含了丰富的图标集合,覆盖了常用的图标类型,如FontAwesome、Material Design等。React Icons可以让开发者在React应用中轻松地添加、定制各…...

Python sider-ai-api库 — 访问Claude、llama、ChatGPT、gemini、o1等大模型API
目前国内少有调用ChatGPT、Claude、Gemini等国外大模型API的库。 Python库sider_ai_api 提供了调用这些大模型的一个完整解决方案, 使得开发者能调用 sider.ai 的API,实现大模型的访问。 Sider是谷歌浏览器和Edge的插件,能调用ChatGPT、Clau…...
DeepSeek、哪吒和数据库:厚积薄发的力量
以下有部分来源于AI,毕竟我认为AI还不能替代,他只能是辅助 快速迭代是应用程序不是工程 在这个追求快速迭代、小步快跑的时代,我们似乎总是被 “快” 的节奏裹挟着前进。但当我们静下心来,审视 DeepSeek 的发展、饺子导演创作哪吒…...

DDD - 微服务架构模型_领域驱动设计(DDD)分层架构 vs 整洁架构(洋葱架构) vs 六边形架构(端口-适配器架构)
文章目录 引言1. 概述2. 领域驱动设计(DDD)分层架构模型2.1 DDD的核心概念2.2 DDD架构分层解析 3. 整洁架构:洋葱架构与依赖倒置3.1 整洁架构的核心思想3.2 整洁架构的层次结构 4. 六边形架构:解耦核心业务与外部系统4.1 六边形架…...
第 1 天:UE5 C++ 开发环境搭建,全流程指南
🎯 目标:搭建 Unreal Engine 5(UE5)C 开发环境,配置 Visual Studio 并成功运行 C 代码! 1️⃣ Unreal Engine 5 安装 🔹 下载与安装 Unreal Engine 5 步骤: 注册并安装 Epic Game…...
【华为OD-E卷 - 109 磁盘容量排序 100分(python、java、c++、js、c)】
【华为OD-E卷 - 磁盘容量排序 100分(python、java、c、js、c)】 题目 磁盘的容量单位常用的有M,G,T这三个等级, 它们之间的换算关系为1T 1024G,1G 1024M, 现在给定n块磁盘的容量,…...
【大数据技术】编写Python代码实现词频统计(python+hadoop+mapreduce+yarn)
编写Python代码实现词频统计(python+hadoop+mapreduce+yarn) 搭建完全分布式高可用大数据集群(VMware+CentOS+FinalShell) 搭建完全分布式高可用大数据集群(Hadoop+MapReduce+Yarn) 本机PyCharm连接CentOS虚拟机 在阅读本文前,请确保已经阅读过以上三篇文章,成功搭建了…...

5-Scene层级关系
Fiber里有个scene是只读属性,能从fiber中获取它属于哪个场景,scene实体中又声明了fiber,fiber与scene是互相引用的关系。 scene层级关系 举例 在unity.core中的EntityHelper中,可以通过entity获取对应的scene root fiber等属性…...

JVM执行流程与架构(对应不同版本JDK)
直接上图(对应JDK8以及以后的HotSpot) 这里主要区分说明一下 方法区于 字符串常量池 的位置更迭: 方法区 JDK7 以及之前的版本将方法区存放在堆区域中的 永久代空间,堆的大小由虚拟机参数来控制。 JDK8 以及之后的版本将方法…...

本地部署 DeepSeek-R1:简单易上手,AI 随时可用!
🎯 先看看本地部署的运行效果 为了测试本地部署的 DeepSeek-R1 是否真的够强,我们随便问了一道经典的“鸡兔同笼”问题,考察它的推理能力。 📌 问题示例: 笼子里有鸡和兔,总共有 35 只头,94 只…...

请求响应(接上篇)
请求 日期参数 需要在前面加上一个注解DateTimeFormat来接收传入的参数的值 Json参数 JSON参数:JSON数据键名与形参对象属性名相同,定义POJO类型形参即可接收参数,需要使用 RequestBody 标识 通过RequestBody将JSON格式的数据封装到实体类…...
数组排序算法
数组排序算法 用C语言实现的数组排序算法。 排序算法平均时间复杂度最坏时间复杂度最好时间复杂度空间复杂度是否稳定适用场景QuickO(n log n)O(n)O(n log n)O(log n)不稳定大规模数据,通用排序BubbleO(n)O(n)O(n)O(1)稳定小规模数据,教学用途InsertO(n)…...

防火墙的安全策略
1.VLAN 2属于办公区;VLAN 3属于生产区,创建时间段 [FW]ip address-set BG type object [FW-object-address-set-BG]address 192.168.1.0 mask 25 [FW]ip address-set SC type object [FW-object-address-set-SC]address 192.168.1.129 mask 25 [FW]ip address-se…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...
c# 局部函数 定义、功能与示例
C# 局部函数:定义、功能与示例 1. 定义与功能 局部函数(Local Function)是嵌套在另一个方法内部的私有方法,仅在包含它的方法内可见。 • 作用:封装仅用于当前方法的逻辑,避免污染类作用域,提升…...

快速排序算法改进:随机快排-荷兰国旗划分详解
随机快速排序-荷兰国旗划分算法详解 一、基础知识回顾1.1 快速排序简介1.2 荷兰国旗问题 二、随机快排 - 荷兰国旗划分原理2.1 随机化枢轴选择2.2 荷兰国旗划分过程2.3 结合随机快排与荷兰国旗划分 三、代码实现3.1 Python实现3.2 Java实现3.3 C实现 四、性能分析4.1 时间复杂度…...

CTF show 数学不及格
拿到题目先查一下壳,看一下信息 发现是一个ELF文件,64位的 用IDA Pro 64 打开这个文件 然后点击F5进行伪代码转换 可以看到有五个if判断,第一个argc ! 5这个判断并没有起太大作用,主要是下面四个if判断 根据题目…...
CppCon 2015 学习:REFLECTION TECHNIQUES IN C++
关于 Reflection(反射) 这个概念,总结一下: Reflection(反射)是什么? 反射是对类型的自我检查能力(Introspection) 可以查看类的成员变量、成员函数等信息。反射允许枚…...

ubuntu中安装conda的后遗症
缘由: 在编译rk3588的sdk时,遇到编译buildroot失败,提示如下: 提示缺失expect,但是实测相关工具是在的,如下显示: 然后查找借助各个ai工具,重新安装相关的工具,依然无解。 解决&am…...