【学习笔记】深度学习网络-深度模型中的优化
作者选择了由 Ian Goodfellow、Yoshua Bengio 和 Aaron Courville 三位大佬撰写的《Deep Learning》(人工智能领域的经典教程,深度学习领域研究生必读教材),开始深度学习领域学习,深入全面的理解深度学习的理论知识。
在之前的文章中介绍了深度学习中用到的数学基础和强化学习的概念,本文将开始介绍现代深度学习中用于解决实际应用的实践。
【一文读懂】深度学习技术谱系:探索生成式AI的核心模型(一) 基础技术图谱
【生成式AI】理解深度学习和机器学习的数学基础:线性代数
【万字长文】理解深度学习和机器学习的数学基础:概率论和信息论
【学习笔记】理解深度学习和机器学习的数学基础:数值计算
【学习笔记】理解深度学习和机器学习的关系
【学习笔记】深度学习网络-深度前馈网络(MLP)
【学习笔记】深度学习网络-正则化方法
一、深度模型优化的背景与意义
1.1 什么是模型优化
在机器学习中,我们通常拥有大量数据和一个可学习的模型。模型优化(Model Optimization)指的是在给定的数据集上,通过某种评价指标(例如损失函数、准确率等)来调整模型内部可学习参数,使之在训练数据上表现尽可能好,同时也具备一定的泛化能力。换言之,在已知的训练样本基础上,模型会自动学习合适的参数,让预测结果更贴近真实目标。
1.2 为什么要优化模型
我们往往无法显式地掌握真实的数据分布。实际上,数据只以离散样本的形式呈现,这就意味着我们需要通过对这些样本的分析,找到一条“最优的”或者足够好的参数配置来解释和预测数据趋势。优化技术不仅仅是为了让模型“拟合”已有数据,更承担着在噪声和有限样本下做出合理预测的重任。
1.3 深度学习中的特殊挑战
与普通的机器学习算法相比,深度学习模型因为包含多层非线性变换,参数数量巨大,结构复杂,导致其优化过程往往面临以下挑战:
- 非凸性:多层神经网络的损失函数通常是非凸的,局部极小值、鞍点等问题比较常见。
- 维度与规模:大量的参数使得搜索空间极其宽广,传统的优化方法需要结合梯度信息,否则无法在高维空间中有效探索。
- 训练效率:由于数据规模庞大,单纯依靠全量数据进行每一步的参数更新在现实中并不高效,故需使用小批量(mini-batch)或随机(stochastic)方式的梯度下降来节省计算成本。
- 超参数选择:学习率、动量参数、正则化系数等都会对模型收敛产生显著影响,如何合理设定并动态调整也是难点之一。
二、 从机器学习问题到优化问题
2.1 从数据分布到优化目标
在理想情况下,我们希望直接根据真实数据分布p_data(x, y)来定义损失函数,进而最小化期望损失。然而,我们通常只掌握有限的训练数据。因此,为了将机器学习问题转化为可操作的优化问题,我们会对训练集上的经验损失(Empirical Loss)进行最小化。换言之,我们定义一个能衡量模型预测与训练数据差异程度的损失函数L(θ),并让优化算法在参数θ的空间中寻找能够最小化L(θ)的解。
2.2 常用的损失函数类型
- 均方误差(MSE):在回归问题中常见,通过度量预测值与真实值的平方差来衡量误差。
- 交叉熵(Cross-Entropy):多用于分类任务,通过衡量输出概率与真实分布之间的差异来评估预测品质。
- 对比损失(Contrastive Loss)等:在度量学习、表示学习及生成模型中使用的更复杂损失度量。
2.3 优化目标与正则化
在追求降低训练集误差的同时,我们也要考虑模型的泛化能力。为此,往往采取正则化策略,例如在损失函数中加入范数惩罚项(如L1、L2)、或采用包含早停(Early Stopping)、数据增广(Data Augmentation)等手段,来防止模型过度拟合。通过在优化目标中纳入这些约束,最终希望找到既能在训练数据上表现良好、又不失泛化能力的参数解。
三、梯度下降:从基础到变形
3.1 梯度下降法的基本原理
在深度学习中最常见的优化算法就是梯度下降(Gradient Descent)。该算法的核心在于:对损失函数L(θ)求梯度∇θL(θ),然后让参数沿着梯度的相反方向更新。具体更新规则为:
θ ← θ − η ∇θL(θ),
其中η为学习率,也称步长。若η过大,容易跳跃到损失函数空间的更差位置;若η过小,收敛速度又会非常缓慢。因此,优化中的一个关键问题便是选取合适的学习率。
3.2 随机梯度下降和小批量梯度下降
- 随机梯度下降(Stochastic Gradient Descent, SGD):在每次更新时,只随机选取一个样本或少量样本来近似计算梯度。它大幅降低了每次迭代的计算量,而且有一定的随机扰动效果,有助于逃离某些坏的局部极小值或鞍点。
- 小批量梯度下降(Mini-Batch Gradient Descent):介于全量(Batch)和随机(Stochastic)之间,将训练集划分为小批量,每次基于一组样本计算梯度再更新参数。该方法在现代GPU并行环境下高效,收敛稳定性也较强,因而被广泛应用于实际深度学习训练中。
3.3 动量方法
纯粹依靠简单的梯度下降,在高维空间中往往会出现震荡、收敛缓慢等现象。动量(Momentum)方法通过引入一个“动量变量”,将之前几次迭代的梯度综合考虑,从而在正确方向上加速收敛,同时减少沿不相关维度的震荡。
常见公式里定义一个速度变量v_t,更新规则如下:
v_t = β v_(t−1) + (1−β) ∇θ L(θ),
θ ← θ − η v_t,
其中β控制了历史梯度对更新方向的影响范围。
四、适应性学习率方法
4.1 为什么需要自适应学习率
当模型维度很高、参数量庞大时,不同方向上的梯度规模可能差别巨大。如果依赖单一的全局学习率,某些方向上会更新过快,另一些方向则更新过慢。自适应学习率方法通过分别记录或估计每个参数维度上的梯度统计量,来自动调整每个维度的学习率,使得整体训练更加平稳、效率更高。
4.2 常见自适应学习率算法
- AdaGrad:为每个参数维度分配独立的学习率,累积每个维度上历史梯度的平方和,用其开平方做归一化。它适用于稀疏数据,但参数可能越来越小,导致后期收敛变慢。
- RMSProp:AdaGrad 的改进版本,通过指数加权移动平均来记录梯度平方和,从而在长期累积和短期变化之间取得平衡。
- Adam:结合了动量思想和自适应学习率,在实践中非常流行。它同时使用过去梯度的一阶、二阶矩估计来校正更新方向,令训练速度与稳定性在多方面都表现良好。
- AdamW:专门调整Adam的权重衰减(Weight Decay)机制,使正则化过程与自适应学习率解耦。
4.3 何时优先考虑自适应方法
自适应学习率算法在以下场景特别有效:
- 数据规模大且特征分布差异明显时。
- 模型具有巨大参数空间,不同层或不同参数对训练速度的需求不一样。
- 需要快速得到化简后的收敛结果,或对训练过程的稳定性有较高需求。
不过,需要注意自适应方法不一定是万能的。实际使用中,我们常常结合动量、正则化调参,以及对学习率做适当衰减(learning rate decay),才算是一个完整且高效的优化策略。
五、非凸优化和局部极小值挑战
5.1 神经网络损失面的复杂性
深度神经网络往往对应着不规则、非凸的损失空间,包含许多极小值、鞍点和曲面结构。对于高维非凸优化,梯度下降并不能保证一定找到全局最优解。尽管如此,实践经验表明深度网络往往能在局部极小值或鞍点附近达到足够好的解,“好”到在实际数据上有不错的泛化性能。
5.2 局部极小值与鞍点
- 局部极小值:指的是在某个区域内,损失函数无法继续下降了,就算它不一定是全局范围最小值。
- 鞍点:周围有的方向是上升,有的方向是下降,这通常比局部极小值更“危险”。在高维空间中,鞍点的数量多于真正意义上的局部极小值,训练过程一旦陷在鞍点附近就会出现停滞或运动缓慢。
不过,随机梯度以及算法中的动量,常常能帮助模型有机会逃离某些鞍点区域。因此,实际深度学习训练并不总是很容易陷入糟糕的鞍点。
5.3 平坦极小值和过参数化
现代深度网络往往处于过参数化(Over-parameterized)状态,拥有比训练样本更多的自由度。研究表明,在这种情形下,模型常常能够找到一大片近似同样低损失的“平坦极小值”区域。一些平坦极小值具有更好的泛化性能,而过于尖锐的极小值则可能对扰动敏感而导致性能不稳。因此,针对平坦性的度量与选择,也成为研究热点。
六、高级优化策略和实践
6.1 学习率调度策略
- 学习率衰减:随着训练的进行,逐渐减小学习率,帮助模型在后期做更精细的收敛。
- 余弦退火(Cosine Annealing):向学习率中注入周期性衰减策略,鼓励在训练后期对解进行更广泛的搜索。
- 循环学习率(Cyclical LR):让学习率在一定范围内周期变化,在一定程度上避免深度网络过早陷入极小值或鞍点。
6.2 二阶方法与近似
一阶方法只利用梯度信息更新参数,二阶方法(如牛顿法)涉及损失函数的Hessian矩阵,从而可在局部更精确地估算最优步长和方向。但Hessian矩阵在深度网络中维度非常高,难以直接计算和存储。为了缓解此问题,人们提出了拟牛顿(Quasi-Newton)法及其近似,或者采用自然梯度法等变体。它们在某些应用场景可以取得更快或更好的收敛效果,但在大规模训练中仍受制于高昂的计算开销。
6.3 正则化与泛化的关系
优化时不仅要关心训练误差,也要关注模型在真实场景的表现。这涉及到正则化方法的选择与应用:
- L2正则(权重衰减):抑制参数绝对值的过度生长,防止过拟合,并让损失面的极小值更平缓。
- Dropout:以一定概率随机丢弃神经元的输出,从而让网络学到更具鲁棒性和稀疏化的表示。
- 数据增广:通过对训练样本做变换(如图像旋转、翻转等),提升模型的多样性对抗过拟合。
结合优化算法与正则化,可以在损失空间的多个区域进行探索,从而寻找到更合适的解。
七、训练效率及实际部署考量
7.1 小批量规模与硬件并行
小批量规模(Batch Size)的选择对训练速度、稳定性和最终性能有重要影响。过小的批量规模带来高波动和收敛不稳定,但每一次更新快。过大的批量规模则能有效利用硬件并行,却容易在平坦区域停滞或需要额外的学习率调整。实践中,工程师往往结合硬件资源、数据规模和模型结构来确定合适批量大小。
7.2 混合精度训练与分布式训练
- 混合精度训练:利用半精度(FP16或BF16)和单精度(FP32)混合进行计算,可显著加快大型模型的训练并减少显存占用。
- 分布式训练:当数据量和模型规模极大时,需要跨多GPU或多节点进行并行训练。这会引入同步、通信开销和一致性问题,但若处理得当可以显著加快优化过程。
7.3 模型压缩与推理优化
在实际部署时,除训练速度外,还要考虑推理阶段的延时、能耗以及内存占用。此时常常需要进行模型剪枝(Pruning)、量化(Quantization)或结构化稀疏化等操作。通过将训练好的模型在推理阶段加以精简,一方面保持较高精度,另一方面减少存储和计算量,从而实现高效部署。
八、总结
8.1 优化理论与实践的持续融合
由于深度学习的快速发展,模型优化也在不断演化。理论研究主要尝试回答:深层网络为何能在非凸损失面中找到足够好的解?梯度算法为何能有效避免糟糕的局部极小值?这些问题的答案并不简单。随着数学工具与大规模计算实验的积累,我们对深度模型的优化行为有了更深刻的认识。
8.2 良好实践与策略整合
在工程实践中,优化过程不止关乎算法本身,还包括网络结构设计、正则化、超参数调优、监控和可视化等各个要素的协调。整体效果往往比单一算法或单纯“修改一点学习率”来的更重要。
- 数据处理:高质量与多样化的数据是良好训练的基石。
- 网络设计:合理的网络深度与宽度、跳跃连接、正则化层等结构优化都有助于稳定收敛。
- 优化器选择:开始可用Adam或RMSProp快速收敛,再用SGD微调以获取更好泛化。
- 学习率与调度:常常设置随迭代数衰减的学习率,或采用“一开始大步走,后面小步微调”的策略。
- 检验与可视化:使用TensorBoard或其他工具监控损失曲线、准确率以及梯度分布,必要时及时调整。
8.3 小结
深度学习模型优化作为训练过程中的核心环节,贯穿着如何定义目标、如何高效搜索高维参数空间、如何在非凸损失下找到满意解等重要主题。从基础的梯度下降方法演化到动量、自适应学习率,再到分布式和混合精度训练,所有这些进步都在不断推动深度学习在更多应用场景下取得成功。
与此同时,优化本身也在不断扩展到新领域,包括强化学习、生成对抗网络以及大语言模型等。对于研究者和实践者而言,在算法、数据和软件工程等层面持续迭代,才是让“优化”不断推进深度学习革命的关键动力。
本篇文章从机器学习问题如何转换成优化问题的角度出发,阐述了模型优化在深度学习中的重要性和复杂性,并详细介绍了常见的梯度下降变体、局部极小值与鞍点挑战、自适应学习率方法以及正则化等核心内容。希望通过以上介绍,读者能对深度模型优化的核心意义、难点和已有解决方案有所了解,并对在深度学习训练中如何挑选和调试优化算法形成更清晰的思路。在实际使用过程中,应结合数据的特点、计算资源、模型规模以及具体任务目标,综合运用多种手段来让模型更可靠地逼近“最优解”,从而在真实环境中创造价值。
相关文章:
【学习笔记】深度学习网络-深度模型中的优化
作者选择了由 Ian Goodfellow、Yoshua Bengio 和 Aaron Courville 三位大佬撰写的《Deep Learning》(人工智能领域的经典教程,深度学习领域研究生必读教材),开始深度学习领域学习,深入全面的理解深度学习的理论知识。 在之前的文章中介绍了深度学习中…...
java八股文之Redis
1.Rdis常见的使用场景 缓存分布式锁(redision,setnx)计数器保存token消息队列延迟队列 2.说明一下缓存雪崩,缓存穿透和缓存击穿以及解决方式 1.缓存雪崩 定义: 缓存雪崩指的是当大量的缓存数据同时失效,…...
ubuntu系统下KVM设置桥接网络(失败)
20250216 - 概述 因实验需求,需要设置KVM下的虚拟机采用桥接模式进行通信,这种方式将使虚拟机与主机类似使用同一网段的IP。实际上,为了实现这个功能,我已经在自己mac上VMware使用过,虚拟机获得了自己独立的IP。 但…...
CentOS 7操作系统部署KVM软件和创建虚拟机
CentOS 7.9操作系统部署KVM软件和配置指南,包括如何创建一个虚拟机。 步骤 1: 检查硬件支持 首先,确认您的CPU支持虚拟化技术,并且已在BIOS中启用: egrep -c (vmx|svm) /proc/cpuinfo 如果输出大于0,则表示支持虚拟…...
驱动开发系列38 - Linux Graphics 3D 绘制流程(一)- 创建画布
一:概述 当应用程序创建 OpenGL 上下文时,它通常需要申请帧缓冲(Framebuffer,即画布)。在 X11 体系下,应用程序不会直接向内核的 DRM 模块请求创建帧缓冲,而是通过 X 服务器进行申请。 虽然从技术上讲,应用程序可以直接使用 DRM 接口创建帧缓冲对象(BO),但为了将其与…...
Spring Boot过滤器链:从入门到精通
文章目录 一、过滤器链是什么?二、为什么需要过滤器链?三、Spring Boot中的过滤器链是如何工作的?(一)过滤器的生命周期(二)过滤器链的执行流程 四、如何在Spring Boot中定义自己的过滤器&#…...
QT 读写锁
一、概述 1、读写锁是一种线程同步机制,用于解决多线程环境下的读写竞争问题。 2、读写锁允许多个线程同时获取读锁(共享访问),但只允许一个线程获取写锁(独占访问)。 3、这种机制可以提高并发性能&…...
C++中的智能指针
智能指针总结 智能指针其作⽤是管理⼀个指针,避免程序员申请的空间在函数结束时忘记释放,造成内存泄漏这种情况滴发⽣。使⽤智能指针可以很⼤程度上的避免这个问题,因为智能指针就是⼀个类,当超出了类的作⽤域是,类会…...
IntelliJ IDEA 接入 AI 编程助手(Copilot、DeepSeek、GPT-4o Mini)
IntelliJ IDEA 接入 AI 编程助手(Copilot、DeepSeek、GPT-4o Mini) 📊 引言 近年来,AI 编程助手已成为开发者的高效工具,它们可以加速代码编写、优化代码结构,并提供智能提示。本文介绍如何在 IntelliJ I…...
【R语言】非参数检验
一、Mann-Whitney检验 在R语言中,Mann-Whitney U检验(也称为Wilcoxon秩和检验)用于比较两个独立样本的中位数是否存在显著差异。它是一种非参数检验,适用于数据不满足正态分布假设的情况。 1、独立样本 # 创建两个独立样本数据…...
PyTorch 源码学习:阅读经验 代码结构
分享自己在学习 PyTorch 源码时阅读过的资料。本文重点关注阅读 PyTorch 源码的经验和 PyTorch 的代码结构。因为 PyTorch 不同版本的源码实现有所不同,所以笔者在整理资料时尽可能按版本号升序,版本号见标题前[]。最新版本的源码实现还请查看 PyTorch 仓…...
04运维实用篇(D4_日志)
目录 一、简介 二、代码中使用日志工具记录日志 1. 操作步骤 步骤1:添加日志记录操作 步骤2:设置日志输出级别 步骤3:设置日志组 2. 知识小结 三、优化日志对象创建代码 1. 实例 2. 总结 四、日志输出格式控制 1. 实例 2. 总结 …...
Linux文件管理:硬链接与软链接
文章目录 1. 硬链接的设计目的(1)节省存储空间(2)提高文件管理效率(3)数据持久性(4)文件系统的自然特性 2. 软链接的设计目的**(1)跨文件系统引用****&#x…...
【零基础学Mysql】常用函数讲解,提升数据操作效率的利器
以耳倾听世间繁华,以语表达心中所想 大家好,我是whisperrrr. 前言: 大家好,我是你们的朋友whisrrr。在日常工作中,MySQL作为一款广泛使用的开源关系型数据库,其强大的功能为我们提供了便捷的数据存储和管理手段。而在…...
小米平板怎么和电脑共享屏幕
最近尝试使用小米平板和电脑屏幕分屏互联 发现是需要做特殊处理的,需要下载一款电脑安装包:小米妙享 关于这个安装包,想吐槽的是: 没有找到官网渠道,是通过其他网络方式查到下载的 不附录链接,原因是因为地…...
宝藏软件系列 篇一:My APK(Android)
文章目录 系列文章官方网站特色功能同类软件 系列文章 官方网站 My APK 官方版本是在 谷歌商店 中上架的。 官方下载地址:Google Play 商店页面。(需要外网) 2025.2最新版本的CSDN本地下载地址(因为是Android App Bundle&…...
本地 Ollama 部署 Deepseek R1 并使用 Spring AI Alibaba 构建 Chat 应用示例
本地部署 Deepseek R1 并使用 Spring AI Alibaba 构建 Chat 应用示例 Ollama 部署 Deepseek R1 官网:https://www.deepseek.com/ Github:https://github.com/deepseek-ai Ollama:https://ollama.com/ Docker Compose 部署一个 Ollama 和…...
centos8.0 docker ngnix
问题1:镜像拉取不下来,用DAO云加速器 问题2:ngnix镜像不能运行, 无法检索OCI运行时错误 在CentOS上使用Docker来运行Nginx是一个常见的做法,因为它提供了快速、一致的环境配置方式,并且可以很容易地扩展。…...
位运算在数据库中的运用实践-以MySQL和PG为例
目录 前言 一、两种不同的数据库设计 1、状态字段存储JSON 2、使用位运算 二、数据库中的位运算实践 1、MySQL中的位运算实践 2、PostgreSQL中位运算实践 三、总结 前言 最近在解决某用户的一个业务需求时,遇到一个很有意思的场景。首先先跟大家分享一下需…...
IoTDB 常见问题 QA 第五期
关于 IoTDB 的 Q & A 情人节之际,让 IoTDB Q&A 陪您一起共度解惑!我们将定期汇总我们将定期汇总社区讨论频繁的问题,并展开进行详细回答,通过积累常见问题“小百科”,方便大家使用 IoTDB。 Q1:导入…...
【kafka系列】日志存储设计 消息写入、读取
目录 日志存储设计 1. 日志存储的目录结构 2. 日志内容格式设计 3. 日志索引设计 4. 设计优势 消息写入流程 示例 流程图 消息读取流程 示例 关键设计细节 流程图 日志存储设计 Kafka的日志存储是其高吞吐、持久化能力的核心设计,其结构包含目录组织、…...
Python实现语音识别详细教程【2025】最新教程
文章目录 前言一、环境搭建1. 下载 Python2. 安装 Python3 使用 pip 安装必要的库 二、使用 SpeechRecognition 库进行语音识别1.识别本地音频文件2.实时语音识别3. 使用其他语音识别引擎 注意事项 前言 以下是一份较为完整的 Python 语音识别教程,涵盖环境搭建、使…...
【一文读懂】HTTP与Websocket协议
HTTP协议 概述 HTTP (Hypertext Transfer Protocol),即超文本传输协议,是一种用于在客户端和服务器之间传输超文本(例如网页、图片、音频、视频等)的通信协议。它是万维网(WWW)的基础,负责在浏…...
SpringBoot+微信小程序+数据可视化的宠物到家喂宠服务(程序+论文+讲解+安装+调试+售后等)
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,我会一一回复,希望帮助更多的人。 系统介绍 在经济高速发展、物质生活极大丰富的当下,人们的精神需求愈发凸显࿰…...
Windows逆向工程入门之堆栈结构与信息获取
公开视频 -> 链接点击跳转公开课程博客首页 -> 链接点击跳转博客主页 目录 1. 堆栈结构基础 堆栈的主要操作: 2. 代码功能解析 2.1 加载 ntdll.dll 2.2 获取 NtQueryInformationThread 函数指针 2.3 调用 NtQueryInformationThread 获取线程信息…...
springboot项目如何部署到tomcat中
1、使用springboot内部嵌入的tomcat 可以改一些tomcat的参数 2、可以把springboot项目打包为war包,然后部署到tomcat中去 Spring Boot 默认使用嵌入式 Tomcat 作为其 Web 容器,这使得 Spring Boot 应用可以作为一个独立的 JAR 文件运行。这种嵌入式服务…...
C语言之easyX
目录 概要 easyX整体架构 图形绘制 画布宽高 圆形 图片的贴图 加载图像 游戏框架 概要 easyX是一个轻量级的图形库,用于在Windows平台上进行简单的2D图形绘制。它提供了一组简单易用的函数,可以方便地绘制基本的图形元素,如线条、矩形、圆形…...
es6箭头函数和普通函数的区别
在JavaScript中,函数是执行特定任务的代码块。函数可以被定义并且随后被调用。JavaScript中有两种主要的函数定义方式:普通函数声明和箭头函数表达式。下面是这两种函数的定义方式及其区别和使用场景: 普通函数声明 普通函数可以通过函数声明…...
DeepSeek R1 32B 本地部署实战
#DeepSeek# DeepSeek是一款基于人工智能的智能助手,专为提升工作效率和信息获取能力而设计。它结合了自然语言处理、机器学习和大数据技术,能够快速理解用户需求并提供精准的答案或解决方案。 DeepSeek的核心功能 智能问答 DeepSeek可以回答各种问题&…...
八、SPI读写XT25数据
8.1 SPI 简介 SPI(Serial Peripheral Interface,串行外设接口)是一种同步串行通信协议,广泛用于嵌入式系统中连接微控制器与外围设备,如传感器、存储器、显示屏等。 主要特点 1. 全双工通信:支持同时发送…...
AIP-145 范围
编号145原文链接AIP-145: Ranges状态批准创建日期2020-05-28更新日期2020-05-28 服务通常需要表示具体值或连续值的范围。这些范围的含义存在诸多差异,也存在许多数据类型:整数、浮点数、时间戳等(在此仅举几例)。根据所讨论范围…...
(学习总结24)Linux 基本命令2
Linux 基本命令2 操作文件或目录命令更改文件或目录访问权限命令 chmod修改文件的所有者和所属组命令 chown修改文件或目录的所属组命令 chgrp更改文件或目录的属性命令 chattr创建文件和目录时的默认权限掩码命令 umask判断文件类型命令 file显示文件或文件系统状态命令 stat树…...
WPF-数据转换器
一、单值转换器 1.不传参数 转换器 当Value值大于100时返回红色 public class DataConverter : IValueConverter{/// <summary>/// 表示从源到目标数据转换/// </summary>/// <param name"value">数据源的值</param>/// <param name&q…...
STM32 I2C通信协议说明
目录 背景 I2C协议 数据的有效性 I2C通信开始和停止条件 I2C数据传输 发送 响应 正常情况: 异常情况: 主机结束接收 写寄存器的标准流程 读寄存器的标准流程 仲裁机制 时钟同步 SDA线的仲裁 程序 背景 对单片机的三大通信中的I2C通信进…...
网络工程师 (42)IP地址
一、定义与功能 IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。这种地址分配方式确保了用户在连网的计算机上操作时,能够高效且方便地从众多计算机中选出自己所需…...
Deepseek实用万能提问模板
一,背景需求约束条件 背景:提供与问题相关的时间、地点、人物、事件等信息,帮助 DeepSeek 更好地理解问题的情境。 需求:清晰明确地阐述你希望 DeepSeek完成的任务或提供的信息。 约束条件:可根据具体情况,对回答的范围、格式、字数等进行…...
强化学习笔记7——DDPG到TD3
前提:基于TD 的方法多少都会有高估问题,即Q值偏大。原因两个:一、TD目标是真实动作的高估。 二:自举法高估。 DDPG 属于AC方法:异策略,适合连续动作空间,因为他的策略网络直接输出的动作&#…...
传统混合专家模型MoE架构详解以及python示例(DeepSeek-V3之基础)
我们已经了解到DeepSeek-V3的框架结构基于三大核心技术构建:多头潜在注意力(MLA)、DeepSeekMoE架构和多token预测(MTP)。而DeepSeekMoE架构的底层模型采用了混合专家模型(Mixture of Experts,MoE)架构。所以我们先了解一下传统混合专家模型MoE架构。 一、传统混合专家模…...
开源协议深度解析:理解MIT、GPL、Apache等常见许可证
目录 前言1. MIT协议:自由而宽松的开源许可1.1 MIT协议的主要特点1.2 MIT协议的适用场景 2. GPL协议:自由软件的捍卫者2.1 GPL协议的核心理念2.2 GPL协议的适用场景 3. Apache License 2.0:开源与专利保护的平衡3.1 Apache License 2.0的主要…...
三维重建(十二)——3D先验的使用
文章目录 零、最近感受和前言一、使用能够快速得到重建初始化的方法1.1 Colmap(多视角)1.2 深度估计(单视角)二、已知形状模板2.1 人脸2.2 人体2.3 动物三、刚性与非刚性约束(变形约束)3.1 刚性变形3.2 非刚性变形四、统计(深度学习)先验——从大量(3D)数据中提取信息…...
Java项目《苍穹外卖》BUG修复记录
一、订单详情地址显示为null 原因:查看订单详情接口中,未设置收货地址信息,故地址返回为null。 解决方案: 1、OrderServiceImpl中创建一个私有方法专门获取订单收货地址 /*** 获取订单收获地址* param addressBookId* return*/…...
DockerDesktop更改默认的磁盘镜像地存储位置
DockerDesktop更改默认的磁盘镜像地存储位置 文章目录 DockerDesktop更改默认的磁盘镜像地存储位置1. 默认存储位置2. 新建一个目录3. 将磁盘镜像存储位置改为新建的目录下 1. 默认存储位置 2. 新建一个目录 如:D:\DiskImagelocationData 3. 将磁盘镜像存储位置改为…...
阿里云视频点播,基于thinkphp8上传视频
前端参考官方示例(jQuery版) <!DOCTYPE html> <html> <head><meta charset"utf-8"><title>阿里云 JavaScript上传SDK Demo (使用jquery)</title><script src"__STATIC__/jquery.min.js"></script><sc…...
C# windowForms 的DataGridView控件的使用
C# Windows Forms DataGridView 控件使用详解 DataGridView 是 Windows Forms 中用于显示和编辑表格数据的核心控件。它支持高度自定义的列类型、数据绑定、事件处理和丰富的样式配置。以下是其详细使用方法。 目录 基础使用 数据绑定 列类型与自定义...
【NLP 22、语言模型 language model】
有时候我也想听听,我在你心里,是什么样子 —— 25.1.12 一、什么是语言模型 语言是灵活的,也是有规律的 了解一门语言的人可以判断一句话是否“合理” 通俗来讲,语言模型用来评价一句话(句子可以看作是字的组合)是否“合理”或…...
vtkCamera类的Dolly函数作用及相机拉近拉远
录 1. 预备知识 1.1.相机焦点 2. vtkCamera类的Dolly函数作用 3. 附加说明 1. 预备知识 要理解vtkCamera类的Dolly函数作用,就必须先了解vtkCamera类表示的相机的各种属性。 VTK是用vtkCamera类来表示三维渲染场景中的相机。vtkCamera负责把三维场景投影到二维平面,如…...
2025 N1CTF crypto 复现
近一个月都没有学习了,一些比赛也没有打,很惭愧自己还是处在刚放假时的水平啊,马上开学了,抓紧做一些训练来康复。 CheckIn import os from Crypto.Util.number import * from secret import FLAGp, q getPrime(512), getPrime…...
大模型开发实战篇5:多模态--文生图模型API
大模型文生图是一种基于人工智能大模型的技术,能够将自然语言文本描述转化为对应的图像。目前非常火的AI大模型赛道,有很多公司在此赛道竞争。详情可看这篇文章。 今天我们来看下如何调用WebAPI来实现文生图功能。我们一般都会将OpenAI的接口࿰…...
Jvascript网页设计案例:通过js实现一款密码强度检测,适用于等保测评整改
本文目录 前言功能预览样式特点总结:1. 整体视觉风格2. 密码输入框设计3. 强度指示条4. 结果文本与原因说明 功能特点总结:1. 密码强度检测2. 实时反馈机制3. 详细原因说明4. 视觉提示5. 交互体验优化 密码强度检测逻辑Html代码Javascript代码 前言 能满…...
Macos机器hosts文件便捷修改工具——SwitchHosts
文章目录 SwitchHosts软件下载地址操作添加方案切换方案管理方案快捷键 检测 SwitchHosts SwitchHosts 是一款 Mac 平台上的免费软件,它可以方便地管理和切换 hosts 文件,支持多种 hosts 文件格式。 软件下载地址 SwitchHosts 操作 添加方案 添加 …...