- 博客(91)
- 收藏
- 关注
原创 链式法则与梯度下降:深度学习训练的数学核心
神经网络训练的核心在于前向传播和反向传播的协同工作。前向传播逐层计算预测输出,而反向传播利用链式法则计算梯度,指导参数更新。梯度下降算法通过迭代调整参数最小化损失函数,其变体如小批量梯度下降在深度学习中广泛应用。链式法则是反向传播的数学基础,通过复合函数求导实现高效梯度计算。尽管面临局部最优、梯度消失等挑战,但通过改进优化算法和调整学习率等策略,这些方法构成了深度学习模型训练的基础框架,推动着人工智能技术的持续发展。
2025-10-09 13:49:54
771
原创 Electron 安全实践:渲染进程如何安全使用主进程的三方库能力
本文介绍了Electron应用中渲染进程安全使用主进程三方库能力的推荐方案。通过IPC通信+预加载脚本构建安全桥梁,在保持上下文隔离和禁用Node.js集成的前提下,利用contextBridge有限暴露API。详细说明了主进程配置、预加载脚本编写和渲染进程调用的实现步骤,强调安全配置要点如nodeIntegration:false和输入验证。同时提供了IPC通信最佳实践和性能优化建议,如批量操作和错误处理。该方案符合Electron安全规范,实现安全与功能的平衡。
2025-09-28 10:44:56
808
原创 神经网络二分类任务详解:前向传播与反向传播的数学计算
本文详细解析了一个神经网络在二分类任务中的完整计算过程。网络包含2个输入神经元、3个隐藏神经元和1个输出神经元,使用ReLU和Sigmoid激活函数。通过前向传播计算出初始输出值0.806和损失值0.018818。随后进行反向传播,计算各层参数梯度并更新权重和偏置。参数更新后,网络输出值提高到0.808,损失降至0.018456,验证了梯度下降算法的有效性。这个过程清晰展示了神经网络从输入到输出、从损失计算到参数更新的完整学习机制。
2025-09-25 15:56:06
940
原创 神经网络结构:从基础原理到自动优化
人工神经网络(ANN)是一种受生物神经系统启发的计算模型,由输入层、隐藏层和输出层组成。输入层接收原始数据,隐藏层进行特征提取和转换,输出层产生预测结果。不同任务需设计不同结构:二分类任务使用Sigmoid输出层,多分类任务用Softmax,回归任务用线性输出层。激活函数(如ReLU、Sigmoid)为网络引入非线性能力。现代大模型采用神经架构搜索(NAS)等技术自动优化网络结构,提高效率。这些机制使神经网络能适应不同任务需求,实现高效学习。
2025-09-24 11:27:07
679
原创 神经网络反向传播中的学习率:从理论到实践的全面解析
**摘要:**学习率是深度学习模型训练中的关键超参数,控制参数更新步长。数学上,学习率(η)调节梯度下降公式中的权重变化幅度。适当的学习率能平衡收敛速度与稳定性,过大导致振荡,过小则收敛缓慢。实际应用中需考虑问题复杂度、数据规模、优化器特性等因素,采用固定策略、衰减策略或自适应调整。实验表明,学习率0.1在线性回归任务中表现最佳,而1.0会导致发散。建议通过学习率扫描和监控训练曲线进行调参,结合自适应算法实现高效训练。
2025-09-24 10:51:46
730
原创 神经网络核心机制深度解析:链式法则驱动下的梯度流动与参数优化
本文分析了神经网络中激活函数的特性及其改进方案。首先探讨了Sigmoid和Tanh函数的饱和性问题,指出其导数在极端值区域趋近于零,导致梯度消失问题。实验数据显示,在MNIST数据集上,ReLU的收敛速度和准确率显著优于Sigmoid和Tanh。随后介绍了ReLU系列改进方案(Leaky ReLU、PReLU、ELU),通过保留负区间梯度缓解神经元死亡问题。CIFAR-10实验表明,改进后的激活函数能有效维持深层网络梯度稳定性。最后从数学角度推导了反向传播中的链式法则和Jacobian矩阵应用,为神经网络训
2025-09-20 21:07:49
734
原创 Python 并发编程:subprocess、threading、multiprocessing、asyncio 与 concurrent.futures 全解析
:系统级交互的桥梁:轻量级 I/O 并发:CPU 密集任务的破局者asyncio:高并发 I/O 的终极方案:抽象层的效率优化理解它们的本质差异,结合具体业务场景灵活组合,才能构建出高效、稳定的并发系统。
2025-07-28 20:38:20
663
原创 Python虚拟环境中子进程是否会自动继承虚拟环境
虚拟环境中的子进程为啥"跳出"环境?根本原因是进程隔离机制下,子进程不会自动继承虚拟环境的激活状态。解决方案优先级推荐直接调用虚拟环境的Python解释器(方法一)——简单、高效、跨平台;手动设置环境变量(方法三)——适合需要精细控制的场景;执行激活脚本(方法二)——仅在需要模拟人工激活流程时使用(如依赖管理命令)。
2025-07-21 18:46:05
522
原创 Python 装饰器:优雅的代码增强术与底层本质解析
在软件开发中,我们常面临这样的需求:在不修改原有代码的前提下,为函数或类动态添加功能。例如:• 统计函数执行时间• 记录方法调用日志• 验证用户权限• 缓存计算结果Python 装饰器(Decorator)正是为解决这类问题而生的元编程工具。它通过"糖衣语法"实现代码的优雅增强,被《Python 之禅》作者 Tim Peters 誉为"最优雅的 Python 特性之一"。装饰器本质上是高阶函数(Higher-order Function),满足以下特性:• 输入:接受一个函数/类作为参数• 输出:返回增强后
2025-05-08 13:14:57
915
原创 Qt Creator插件系统详解及插件开发实战
Qt Creator作为Qt官方IDE,其插件系统允许开发者扩展IDE功能。本文以Qt Creator 4.11(基于Qt5.12.12构建)为例,深入解析插件系统规则,并提供从零开发插件的完整指南。// 创建菜单项。
2025-03-11 10:51:06
1549
原创 Qt 多线程误区:QThread 任务未正确执行及收尾回调未触发的原因分析
在开发 Qt 项目时,我们希望并行执行多个任务来提高效率,并在所有任务完成后进行收尾处理。需要更灵活的线程管理(如持续运行任务)只是空跑了一下,没有执行任何任务。,它只是提供了一个独立的事件循环。任务是一次性的,无需额外管理线程。代码更简洁,自动管理线程,避免。仍然卡在主线程,请一定要改用。事件触发时调用收尾函数。(主线程)的方法,因此。线程控制权更强,可绑定。
2025-02-24 14:49:38
649
原创 系统架构设计师备考策略
著称,官方教材《系统架构设计师教程(第2版)》厚达 700 余页,若盲目通读耗时费力。“数据库响应慢问题,建议采用读写分离(理论)+ 增加从库(方案)+ 监控 QPS 验证(数据)。“本文以××项目为背景,通过引入××架构,解决了××问题,使系统吞吐量提升××倍。:通过关键词(如“高并发”、“数据一致性”)匹配知识模块。:用图表展示性能提升(如 TPS 对比图)。:掌握 80% 高频考点,建立知识框架。:不透露企业机密,使用“某银行”代替。:抓住核心考点,合理分配时间,用。:全真模考,提升应试稳定性。
2025-02-22 18:01:42
645
原创 领域模型:驱动软件进化的战略核心与实践指南
从 2003 年 DDD 提出到 2025 年 AI 建模普及,领域模型已从方法论演变为软件工程的基石。只有将模型视为活的有机体,而非静态图纸,软件才能真正具备应对未知挑战的进化能力。“未来的软件战争,本质上是领域模型的战争。
2025-02-15 15:41:28
719
原创 软件质量属性全景解析:从理论到工程实践
在Gartner 2025年技术成熟度曲线中,自适应质量管理系统(AQMS)已进入生产力 Plateau期(成熟应用阶段)。质量即代码(Quality as Code)实践可观测性驱动的质量优化隐私计算与安全多方计算的融合通过将质量属性融入DevOps全流程,构建真正具备抗风险能力的软件系统。正如Martin Fowler所言:"优秀的架构不是在会议室设计的,而是在质量属性的持续博弈中进化出来的。
2025-02-12 16:05:06
1195
原创 软件架构评估中的敏感点、权衡点、风险点
是三个至关重要的概念。理解它们之间的关系,并合理评估它们的影响,有助于构建稳定、高效、可扩展的系统。本文将深入探讨这三个概念,并结合实际案例进行分析。在软件架构设计和评估过程中,架构师需要关注多个关键因素,以确保系统满足功能性和非功能性需求。通过深入理解这三者的关系,架构师可以更好地设计出。,我们来看如何分析敏感点、权衡点和风险点。假设我们正在设计一个。
2025-02-11 09:49:42
1612
原创 华为 MindStudio 安装指南
它支持 模型训练、推理、算子开发、性能优化 等 AI 任务,并依赖 CANN(Compute Architecture for Neural Networks) 作为计算架构基础。本指南介绍如何在 KunLun G2280 服务器上安装 MindStudio,包括环境准备、依赖安装、CANN 安装及 MindStudio 安装等步骤。安装完成后,你可以使用 MindStudio 进行 Ascend AI 计算 相关开发,如 模型训练、算子开发、AI 推理 等任务。
2025-02-10 15:43:19
2051
原创 基于架构的软件设计(Architecture-Based Software Design, ABSD)
在实际项目中,架构设计往往会复用一些通用的软件模板(Software Patterns),这些模板提供了标准化的软件结构设计方案。采用系统化的方法,通过架构驱动整个软件开发生命周期,以确保系统的稳定性、可扩展性和适应性。不同的架构风格适用于不同的场景,在实际项目中,需要根据业务需求选择合适的架构风格。:分析业务需求,明确系统的功能性和非功能性需求,为架构设计提供依据。:由外部专家或客户评审架构方案,确保架构的合理性和可行性。:随着业务需求的变化,优化架构,确保系统的长期可维护性。基于架构的软件设计包括。
2025-02-07 11:14:07
1731
原创 机器学习-学习类型
监督学习是一种利用标注数据(输入和对应的目标输出)训练模型的方法,其目标是学习输入与输出之间的映射关系。这种方法广泛应用于分类和回归任务。无监督学习在没有标签的情况下,通过分析数据的结构和模式,挖掘数据的内在规律。其目标是从数据中发现潜在的模式或分布。半监督学习结合少量有标签数据和大量无标签数据进行训练,利用无标签数据弥补标注数据不足的问题。强化学习是一种通过与环境交互来学习最优策略的方法。智能体根据环境反馈的奖励信号调整策略,以最大化累计奖励。自监督学习通过数据生成伪标签来训练模型,无需人工标注。
2025-01-22 12:08:41
1149
原创 利用硬盘虚拟内存解决华为手机模拟器运行内存不足问题
在进行鸿蒙开发时,华为手机模拟器是必不可少的工具。然而,对于只有8GB物理内存的电脑来说,运行模拟器可能会遇到"系统内存不足"的提示,导致模拟器无法正常启动。华为手机模拟器需要较大的内存支持,而只有8GB内存的电脑无法满足其运行需求。通过设置硬盘虚拟内存,可以将部分硬盘空间划分为虚拟内存,与物理内存共同使用,从而达到16GB的总内存需求,顺利运行模拟器。再次尝试运行模拟器,就能成功运行啦,欧耶。打开任务管理器,切换到“性能”选项卡。在“内存”部分,在“已提交”内存发现可用内存有16G啦。
2025-01-17 21:01:18
1421
原创 QT程序崩溃的背后:一次离奇的调试经历
程序崩溃是开发者无法避免的挑战,但也是提高能力的机会。通过这次经历,我不仅解决了问题,还对 Qt 框架有了更深入的理解。希望这篇博客能为其他开发者提供一些启发,在面对类似问题时更有信心和方向。如果你也遇到过类似的棘手问题,欢迎在评论区分享你的经验!
2025-01-15 14:54:28
839
原创 在 Visual Studio Code 中使用 qmake 构建和调试 Qt 项目
通过配置tasks.json和,我们可以在 VSCode 中无缝集成qmake项目,实现构建和调试。同时,使用配置 IntelliSense,可以提高代码编辑体验。虽然 VSCode 不像 Qt Creator 那样对 Qt 项目有内置支持,但它丰富的插件生态(如笔记和 AI 辅助插件)和高度的可定制性,使得它成为 Qt 开发的一个优秀选择。
2025-01-10 10:15:21
2162
原创 linux双网卡配置双路由指南
在Linux系统中配置双网卡以实现基于不同路由策略的网络访问,是一个常见的需求,特别是在需要同时连接多个网络或者进行特定网络流量管理的场景中。本文将详细介绍如何在Linux系统中配置有线网卡A和无线网卡B,分别通过不同的网关访问不同的网络。现在,系统会根据定义的规则,通过不同的网卡路由不同的网络流量。172.x.x.x 和 10.x.x.x 网段的数据通过网卡A路由。是无线网卡的常见名称,实际使用时请替换为你的无线网卡名称(可以使用。是有线网卡的常见名称,实际使用时请替换为你的有线网卡名称。
2024-12-24 14:25:56
2726
原创 警告:文件XXX的修改时间在未来XXX秒后
原来是电脑的系统时间错乱了,变成2021年2月17号,将电脑系统时间改回来之后,编译正常。警告:文件XXX的修改时间在未来XXX秒后。
2023-09-27 15:50:14
785
原创 dbus简介及使用
观察DBus消息:在d-feet窗口的上部面板中,单击“Session Bus”选项卡以打开DBus消息视图。检查DBus对象和接口:在d-feet窗口的左侧面板中,展开“org”文件夹以查看可用的DBus对象和接口。d-feet是一个python编写的可视化DBus接口工具,可以在Linux系统上使用。发送DBus消息:在d-feet窗口的左侧面板中选择一个对象,选择一个方法并双击。uint32:32位无符号整数类型。int32:32位有符号整数类型。### 查询当前生效的连接名。
2023-08-14 21:10:22
1316
原创 systemd编写自启动服务文件的常见错误
这个错误一般是工作目录填错了,检查下WorkingDirectory或ExecStart填错了。这个错误一般是所属用户或用户组找不到,检查下User和Group字段是不是填错了。
2023-08-11 17:03:57
1813
原创 交叉编译工具链
官网下载压缩包,要注意自己的CPU架构,比如我是在x86_64电脑上编译arm上的目标文件,因此下载gcc-linaro-{version}-x86_64_arm-linux-gnueabihf。CodeSourcery:Codesourcery是一家提供定制编译器的公司,其提供的交叉编译链工具链包括GCC和Binutils,可用于ARM和MIPS等架构的编译。Linaro:Linaro是一家致力于ARM架构开发的公司,其提供的交叉编译工具链包括GCC和Binutils,可用于ARM架构的编译。
2023-08-06 10:53:03
750
原创 开发板配置
CPU:NXP i.MX6ULL,单核,ARM Cortex-A7。核心板存储:4G emmc flash。MAC地址:1C877651E685。核心板内存:256M DDR3。
2023-08-06 10:36:26
159
原创 Ubuntu软件包安装失败:代码 bionic 和 focal的区别
不同版本的Ubuntu的软件源及软件包依赖关系是不同的,Ubuntu就是靠版本信息中的Codename代号来区分的。不光是对 Ubuntu 适用,对deepin、uos等debain系列的操作系统都适用。我在Ubuntu上使用apt安装软件时总是报一些错误,不是版本不对,就是依赖关系不对。尝试了各种方法,突然想到是不是软件源有问题。可见我的Ubuntu版本是20.04,代号是focal。看到上面的bionic代号,我就知道果然是软件源的问题。
2023-07-15 13:55:07
4346
原创 VScode配置Linux内核环境
接着输入远程主机的用户名和ip,如root@192.168.50.170,接着连接远程主机,会要求输入远程主机的密码,成功后即可访问远程主机,并可访问远程主机上的文件。在linux内核源码目录执行python scripts/clang-tools/gen_compile_commands.py命令,即可生成compile_commands.json,该文件包含了内核编译实际使用了的源文件。如果是远程阅读和开发代码的话,需要安装该插件,该插件的作用是通过ssh协议使vscode能够访问远程服务器。
2023-07-02 16:19:38
1478
原创 QT .pro中 PKGCONFIG配置项搜索不到库
编译失败,提示gsettings-qt未安装,但是我明明在Ubuntu下安装了libgsettings-qt-dev开发包,唯一的解释是,qt没有搜索到该库。一顿操作之后,居然是因为Ubuntu下没有安装pkg-config!,执行“sudo apt-get install pkg-config”,问题解决。qmake在遇到PKGCONFIG配置项后,会调用pkg-config去在特定的几个目录下搜索依赖库。既然说到这里,就再讲讲qt creator添加第三方库的几种方式。
2022-10-15 16:32:54
1641
原创 反反编译的手段
理论上来说,没有不能破解的程序,因为程序最终都要部署到目标机器上,在目标机器上运行,当然有的程序反编译后只能得到汇编源码,但有了汇编源码就还原了功能。反反编译的手段,主要是提高反编译的难度和门槛。尤其像C#和java这类语言很容易反编译,因为这类语言编写的程序,都首先会被翻译成一种在.net或java虚拟机平台上运行的“中间语言”IL,只有在程序运行时,运行时编译器(JITter)才将IL代码编译成机器语言。这种IL以dll的形式存在,很容易通过反射、ILDASM和ILASM等方式将代码识别出来。为了保
2021-12-27 14:56:08
1341
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅