- 博客(53)
- 收藏
- 关注
原创 CUDA并行计算优化技巧
示例查看:https://download.csdn.net/download/weixin_45776000/92463024。CUDA并行计算优化技巧。
2025-12-15 16:33:56
348
原创 动态规划详解:从入门到精通
遇到新问题时,思考如何将其分解为子问题,如何定义状态,以及状态之间如何转移。通过不断练习,你将能够识别更多适用动态规划的场景,并熟练解决各类动态规划问题。动态规划(Dynamic Programming,简称DP)是一种将复杂问题分解为更小的子问题来求解的算法思想。它特别适用于具有重叠子问题和最优子结构性质的问题。如果从A到C的最短路径经过B,那么从A到B和从B到C的路径也分别是各自的最短路径。构建最终解:从子问题的解构建原问题的解。分解问题:将原问题分解为若干个子问题。四、经典动态规划问题。
2025-12-15 13:53:18
662
原创 图算法:从基础到应用
图是一种强大的数据结构,用于表示对象之间的关系。从社交网络到路线规划,从网页连接到生物信息学,图算法在计算机科学的各个领域都有着广泛的应用。本文将介绍图的基本概念、常见算法及其实现。理解这些基础算法是解决更复杂图问题的基础,也是许多实际应用的核心。网络流算法:如Ford-Fulkerson算法解决最大流问题。对于最小生成树,Prim适合稠密图,Kruskal适合稀疏图。对于负权图最短路径,使用Bellman-Ford。图匹配算法:如匈牙利算法解决二分图匹配。对于无权图最短路径,使用BFS。
2025-12-15 13:40:06
309
原创 搜索算法详解:从基础到高级
搜索算法的效率直接影响程序的性能,因此在各种应用场景中都有广泛的应用,包括数据库查询、路径规划、人工智能、游戏开发等。本文将从最简单的线性搜索开始,逐步深入探讨各种搜索算法,包括二分搜索、哈希搜索、深度优先搜索、广度优先搜索以及更高级的启发式搜索算法。随着数据量的不断增长,高效的搜索算法将变得越来越重要。线性搜索是最直观的搜索算法,它从数据集的一端开始,按顺序检查每个元素,直到找到目标元素或遍历完整个数据集。广度优先搜索是一种用于遍历或搜索树或图的算法。它沿着树的深度遍历节点,尽可能深地搜索树的分支。
2025-12-15 11:48:12
797
原创 使用PIL库将携带方向信息的图片转正
在深度学习训练当中,遇到有些图在不同平台上看到的方向不一样,会导致出错,这些图一般都是携带方向信息的。例如:我在训练yolo过程中遇到一些图,图片方向是在windows显示是正方向,opencv 读取的图片宽高也是我在屏幕中看到的正方向,但是实际上图片携带了方向信息,导致宽高读错,处理标签时发生了错误,因此训练不佳。原来遇到过一张图,图片方向是看着没问题,然后使用opencv测试也没问题,但是一在部署的平台上(使用了其他图像库)测试结果就不一样了。搞了好久,发现是图片方向问题。
2025-12-12 15:20:26
279
原创 PIL库将图片位深度是1、8、32统一转换为24的方法
深度学习中通常遇到各种各样的图片,位深度有的时候各不相同,容易影响训练测试,因此为了避免麻烦,一般将图片统一为位深度是24。
2025-12-12 14:57:14
264
原创 RNN(循环神经网络)原理
RNN的突破:引入"记忆"概念,让网络可以记住之前的信息来处理当前输入。无法建模时间依赖:比如语言中"我今天吃了__"的预测需要前面信息。无记忆性:每个输入独立处理,忽略序列中元素的时间/顺序关系。关键:所有时间步共享相同的权重参数 W, U, V。主要问题:梯度消失/爆炸,通过LSTM/GRU缓解。W: 隐藏状态权重 (h_t-1 → h_t)应用场景:NLP、时间序列、语音识别等序列任务。输入:序列 → 编码 → 解码 → 输出序列。U: 输入权重 (x_t → h_t)
2025-12-12 14:12:37
465
原创 全连接层(Fully Connected Layer)
全连接层(Fully Connected Layer,又称稠密层/Dense Layer)是神经网络中最基础且重要的组件之一,广泛应用于多层感知机(MLP)、卷积神经网络(CNN)和Transformer等架构中。示例:在图像分类中,CNN 末端的全连接层将卷积提取的局部特征整合为全局语义信息。结合激活函数(如 ReLU)引入非线性,使网络能够逼近复杂函数(通用近似定理)。结构特点:层中每个神经元与上一层的所有神经元相连,每个连接都有独立的权重参数。参数量:m×n+m(权重 + 偏置)
2025-12-12 13:56:50
343
原创 逻辑回归(Logistic Regression)进行多分类的实战
方法3:使用OneVsRestClassifier包装器。Softmax通常更直接,但需要计算所有类别的概率。参数C控制正则化强度(C越小,正则化越强)对于非线性问题,需要特征工程或使用核方法。Scikit-learn默认使用此方法。类别较多:使用OvR或Softmax。多分类使用准确率、混淆矩阵、分类报告。逻辑回归对特征缩放敏感,务必标准化。方法2:使用Softmax回归。适合类别较少但样本均衡的情况。方法1:使用默认的OvR策略。类别较少且均衡:考虑OvO。预测时选择概率最高的类别。
2025-12-12 13:37:22
442
原创 DefaultCPUAllocator: can‘t allocate memory
【代码】DefaultCPUAllocator: can‘t allocate memory。
2025-12-11 19:03:23
413
原创 交叉熵:原理、推导与完整实现
第一章:信息论基础与交叉熵的起源1.1 信息论基本概念1.1.1 信息量(自信息)信息量衡量一个事件发生的"意外程度"。对于发生概率为 p(x)p(x)p(x) 的事件 xxx,其信息量为:性质:概率越小的事件,信息量越大必然事件(p=1p=1p=1)的信息量为0信息量单位:比特(bit,使用 log2\log_2log2)或奈特(nat,使用 ln\lnln)1.1.2 熵(Entropy)熵衡量一个随机变量的不确定性,即平均信息量:对于连续随机变量:示例:公平硬币抛掷的熵为:
2025-12-08 20:03:42
759
原创 深度学习的链式法则
深度学习训练 = 通过链式法则,把损失函数对每一层参数的导数算出来,然后用梯度下降更新参数。在 PyTorch 里你不会手写链式法则,但 底层一样在做这件事。你看到的 .grad 就是通过链式法则 + 计算图一层层传回来的结果。深度学习 = 用链式法则,把损失函数对每一层参数的梯度都算出来。链式法则 = 把复杂复合函数的导数拆成一层一层的乘积。这整个过程,就是链式法则在神经网络里的「矩阵版」。循环多轮,就变成一个最简易的「手写版训练过程」。这就是反向传播里每一层算梯度的本质。框架帮你自动用链式法则算梯度。
2025-12-08 19:42:49
318
原创 感知机梯度推导与实现
一、感知机基础1.1 什么是感知机?感知机(Perceptron)是Frank Rosenblatt于1957年提出的第一个机器学习算法,也是神经网络和深度学习的起源。它是最简单的前馈人工神经网络,是单层神经网络的一种。1.2 基本结构输入层:接收特征向量 x=(x1,x2,...,xn)x = (x_1, x_2, ..., x_n)x=(x1,x2,...,xn)加权求和:z=wTx+b=∑i=1nwixi+bz = w^T x + b = \sum_{i=1}^n w_i x_i + bz
2025-12-06 17:08:15
944
原创 随机梯度下降:原理、算法与代码实现
一、引言:从梯度下降到随机梯度下降梯度下降是机器学习中最基础的优化算法,用于最小化损失函数。传统的批量梯度下降(Batch Gradient Descent, BGD)在每次迭代中使用全部训练样本计算梯度:其中 J(θ)=1m∑i=1mL(f(x(i);θ),y(i))J(\theta) = \frac{1}{m} \sum_{i=1}^m L(f(x^{(i)}; \theta), y^{(i)})J(θ)=m1∑i=1mL(f(x(i);θ),y(i)),mmm 是样本总数。然而,当训练集很大
2025-12-06 16:41:38
752
原创 神经网络反向传播:原理、算法与实现
反向传播算法是神经网络训练的基石,其核心思想是通过链式法则高效计算梯度。现代深度学习框架(如PyTorch、TensorFlow)已自动实现反向传播,但掌握其原理对于深入理解神经网络至关重要。反向传播(Backpropagation)是神经网络训练中最核心的算法之一,它利用链式法则高效地计算损失函数相对于网络参数的梯度。反向传播通过"前向传播"计算网络输出和损失,然后通过"反向传播"将误差从输出层逐层传回输入层,计算各层参数的梯度,最后利用梯度下降法更新参数。五、反向传播的优化技巧。一、反向传播算法概述。
2025-12-06 16:28:30
1436
1
原创 神经网络:从数学原理到代码实现的艺术
这种转变不仅改变了我们构建智能系统的方式,更重新定义了机器与智能的关系。神经网络的真正力量不在于其复杂性,而在于其简单性——通过简单的组件以复杂的方式连接,创造出超越各部分之和的整体智能。神经网络的实现不仅仅是编写代码,更是一种理解智能本质的方式。通过将数学原理转化为可执行的代码,我们不仅创建了实用的工具,也在探索大脑如何处理信息的深层机制。当我们编写神经网络代码时,我们不仅在创造工具,也在创造一面镜子,映照出人类智能的本质,探索着认知的边界,向着理解智能本身这一终极目标迈进。结语:从代码到智能的桥梁。
2025-12-04 18:48:32
398
原创 EIOU (Efficient IoU): 高效边界框回归损失的解析
距离项:二次函数,Lipschitz常数为2/max(c_w² + c_h²)宽高比项:二次函数,Lipschitz常数为2/max(c_w², c_h²)1.CIOU的宽高比耦合问题:宽高比项耦合在一起,优化困难。梯度稳定:避免arctan函数带来的梯度不稳定。2.梯度不稳定性:在特定情况下梯度变化剧烈。数值稳定:避免对角线长度计算中的平方根运算。解耦优化:宽度和高度的优化相互独立。IoU项:在重叠区域连续可微。计算高效:减少了计算复杂度。3.2 优化的批量计算版本。定理2:分离优化的收敛速度。
2025-12-04 18:37:50
303
原创 CIOU (Complete IoU) 分析
当 IoU → 1 时:α → v/(v) = 1,维持宽高比优化。几何意义:将中心点距离相对于最小闭合区域对角线长度进行归一化。CIOU 中心点 + 宽高比惩罚 完整形状匹配,稳定收敛。当 IoU → 0 时:α → 1,强调宽高比优化。DIOU 中心点距离惩罚 加速收敛,优化中心点。2.2.2 中心点距离惩罚项 (R_DIOU)当 v → 0 时:α → 0,忽略宽高比惩罚。当宽高比差异最大时,v ∈ [0, 1]答:在局部区域是拟凸的,但不是全局凸函数。定理 2:CIOU损失的收敛速度。
2025-12-04 17:46:31
346
原创 DIOU (Distance-IoU) 详解
它在 IoU 的基础上直接考虑了边界框中心点距离,能够更有效地衡量两个边界框之间的相似度。证明:由于 (d²/c²) ≥ 0,所以 DIOU = IoU - (d²/c²) ≤ IoU。证明:d = 0 时,DIOU = IoU - 0 = IoU。回归不准确:当两个框处于包含关系时,GIOU 退化为 IoU。定理2:当且仅当两个框中心点重合时,DIOU = IoU。最差情况:两个框相距无限远时,DIOU ≈ -1。证明:DIOU(A,B) = DIOU(B,A)GIOU:退化为IoU,惩罚项为0。
2025-12-04 17:26:14
547
原创 GIOU (Generalized Intersection over Union) 详解
5.计算GIOU:GIOU = IoU - (Area© - U) / Area©。2.计算两个框的并集面积:U = Area(A) + Area(B) - I。1.零重叠时梯度为零:当两个框不重叠时,IoU=0,梯度也为0,无法优化。C:包含预测框A和真实框B的最小闭合凸区域(通常是矩形)的面积。非重叠时有梯度:即使两个框不重叠,GIOU也能提供有效的梯度。1.计算两个框的交集面积:I = Area(A ∩ B)对称性:GIOU(A,B) = GIOU(B,A)当两个框完全重合时,Loss = 0。
2025-12-04 17:14:38
162
原创 Pandas库介绍
Pandas是Python的核心数据分析库,提供了高效、灵活的DataFrame结构,专为处理结构化数据设计。它支持从CSV、Excel、SQL等源快速加载数据,并能实现数据清洗、转换、聚合及可视化等操作。Pandas与NumPy、Scikit-learn等库无缝集成,已成为金融、统计、机器学习等领域的数据处理标准工具。
2025-11-26 17:42:34
301
原创 Python流程控制
for循环擅长遍历序列元素,while循环适合条件控制的重复杂执行。掌握流程控制,就能让代码具备“思考能力”,根据实际情况做出智能决策,编写出真正有用的程序。条件判断通过if-elif-else语句实现分支选择,让程序根据不同条件执行相应代码块。if负责主要条件,elif处理多个并列条件,else兜底默认情况。Python流程控制是程序执行的指挥棒,决定了代码的运行路径和逻辑流向。主要包括条件判断和循环结构两大核心。流程控制是Python编程的基石,让代码从静态指令集变为动态智能体。
2025-11-21 14:17:29
266
原创 大规模文本数据处理:一个基于Python的生产级解决方案
本文详细介绍了一个针对大规模文本数据处理的生产级Python解决方案,该方案能够高效处理5000万个文本文件,涵盖了并行计算、内存管理、数据持久化、容错处理等关键技术。通过多进程处理、批次管理和数据库集成,该方案在保证处理效率的同时,确保了系统的稳定性和可扩展性。随着大数据时代的到来,处理海量小文件(如日志文件、传感器数据、文本文档等)成为许多应用场景的常见需求。传统的单线程文件处理方法在处理千万级文件时面临性能瓶颈和内存溢出风险。可恢复性:每个批次独立处理,支持断点续处理。4.3 数据库操作优化。
2025-11-20 17:23:58
503
原创 Python GIL(全局解释器锁)
它在单个线程内通过事件循环来调度多个任务,在遇到 I/O 阻塞时自动切换,完全没有线程切换和 GIL 的开销。GIL 的解决方案:通过 GIL,保证同一时间只有一个线程在执行字节码,从而避免了引用计数的竞争问题。PyPy:一个高性能的 JIT 编译器实现的 Python,有一个 GIL,但其 STM(软件事务内存)项目正在尝试移除它。简化了非线程安全对象的实现:由于 GIL 的存在,对单个字节码的操作是原子的,这使得许多内置数据结构的实现变得简单。运行结果很可能显示,双线程的耗时和单线程差不多,甚至更长。
2025-11-20 16:20:16
842
原创 仿射变换:原理、实现与应用
仿射变换作为基础而强大的数学工具,为多维空间中的几何操作提供了统一框架。其简洁的矩阵表示和明确的几何解释,使其成为计算机图形学和相关领域不可或缺的核心技术。深入理解仿射变换原理,对于开发高效、准确的几何处理算法具有重要意义。通过齐次坐标系统,将非线性平移操作转化为线性矩阵运算,极大简化了几何变换的计算流程。图像处理:几何校正、图像配准、视角归一化。a、e:分别控制x、y轴向的缩放因子。组合变换:上述基本变换的任意序列组合。b、d:决定坐标轴的错切变形程度。c、f:表征平面内的平移分量。
2025-11-20 15:31:07
659
原创 OpenCV 图像处理基础算法详解(二)
5.3 Laplacian算子。5.2 Scharr算子。4.2 拉普拉斯金字塔。6.1文档扫描仪效果。
2025-11-19 18:00:57
415
原创 Python上下文管理器详解
什么是上下文管理器?上下文管理器是Python中用于管理资源(如文件、网络连接、数据库连接等)的对象,它确保资源在使用后被正确释放,即使在发生异常的情况下也是如此。
2025-11-18 14:03:03
378
原创 Python海龟绘图实现动态时钟
本项目使用Python的turtle图形库构建了一个精美的动态模拟时钟,融合了编程技术与传统计时美学。1.三指针独立驱动系统(时针、分针、秒针)4.100毫秒级精准定时刷新。3.60刻度精细表盘设计。2.实时日期与星期显示。
2025-11-18 10:00:05
370
原创 Python 装饰器详解
装饰器是Python中一种强大的语法特性,它允许在不修改原函数代码的情况下,为函数添加新的功能。装饰器本质上是一个高阶函数,它接受一个函数作为参数,并返回一个新的函数。使用 @functools.wraps 保留元信息。在不修改原代码的情况下扩展功能。实现AOP(面向切面编程)5.2 带参数的类装饰器。2.1 简单装饰器示例。装饰器本质上是高阶函数。类也可以作为装饰器使用。
2025-11-17 18:45:15
520
原创 LSTM详解
长短期记忆网络(LSTM) 是一种特殊的循环神经网络(RNN),专门解决传统RNN的梯度消失问题,能够有效学习长期依赖关系。4.batch_first:是否batch维度在前。1.遗忘门:决定从细胞状态中丢弃哪些信息。2.hidden_size:隐藏状态维度。2.输入门:决定哪些新信息存入细胞状态。1.input_size:输入特征维度。3.输出门:决定当前时刻输出哪些信息。3.时间序列预测:股票预测、天气预测。1.序列分类:文本分类、情感分析。2.序列生成:文本生成、机器翻译。
2025-11-17 18:41:18
307
原创 Python 迭代器详解
迭代器是Python中用于遍历集合元素的对象。任何实现了__iter__()和__next__()方法的对象都是迭代器。迭代器遵循迭代器协议,允许逐个访问容器中的元素。enumerate() - 带索引的迭代。1.内存高效:不需要一次性加载所有数据。reversed() - 反向迭代。4.无限序列:可以表示无限的数据流。2.惰性求值:按需计算,提高性能。3.统一接口:一致的遍历方式。迭代器 vs 可迭代对象。zip() - 并行迭代。itertools 模块。
2025-11-14 16:21:16
299
原创 Python 生成器详解
生成器是Python中一种特殊的迭代器,它不会一次性生成所有值,而是按需生成,这在处理大数据集时非常高效。生成器使用yield关键字而不是return来返回值。1.大数据处理:逐行读取文件、数据库记录。4.内存敏感应用:移动设备、嵌入式系统。2.流式数据:网络数据包、实时数据流。3.无限序列:斐波那契数列、素数生成。5.数据处理管道:多个处理步骤的串联。生成器的两种创建方式。
2025-11-14 16:09:06
276
原创 K-Means 聚类算法详解
K-Means 是一种经典的无监督聚类算法,旨在将数据集划分为K个簇,使得同一簇内的数据点尽可能相似,不同簇的数据点尽可能不同。init: 初始化方法(‘k-means++’, ‘random’)4.迭代:重复步骤2-3直到收敛(簇中心不再显著变化)1.初始化:随机选择K个数据点作为初始簇中心。2.分配步骤:将每个数据点分配到最近的簇中心。1.客户分群:根据消费行为对客户进行分组。4.异常检测:识别远离所有簇中心的异常点。3.更新步骤:重新计算每个簇的中心点。n_clusters: 簇的数量K。
2025-11-13 16:12:07
1125
原创 传统机器学习分类模型详解(二)
通过集成多棵决策树,采用bagging和随机特征选择来提高泛化能力。评估指标:准确率、精确率、召回率、F1分数、AUC等。模型解释:使用SHAP、LIME等工具增强可解释性。数据预处理:标准化、处理缺失值、特征工程。模型选择:从小模型开始,逐步尝试复杂模型。调参策略:使用网格搜索或随机搜索。特征独立性假设不成立时效果差。
2025-11-13 08:59:41
668
原创 传统机器学习分类模型详解(一)
传统机器学习分类模型是指在深度学习兴起之前广泛使用的分类算法,它们具有原理清晰、计算效率高、可解释性强等特点。可解释性强,系数代表特征重要性。可能创建 biased 树。核技巧可以处理非线性问题。计算效率高,训练速度快。能够处理数值和类别特征。只能处理线性可分问题。直观易懂,可解释性强。
2025-11-11 11:44:13
467
CUDA并行计算优化技巧
2025-12-15
excel自动生成汇总报表
2025-12-15
excel复杂匹配合并
2025-12-15
excel多列条件去重宏脚本
2025-12-15
通用的 Excel 高级数据处理 VBA 宏脚本
2025-12-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅