自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 层归一化(LayerNorm, LN)的行为取决于指定的归一化维度,self.ln_post(x3[:, 0, :]) 和 self.ln_post(x3) 的区别

摘要:本文对比了Vision Transformer中两种层归一化应用方式的差异。直接对序列进行归一化(ln_post(x3))会独立处理每个token的特征,保持[8,257,768]的结构;而针对分类任务设计的ln_post(x3[:,0,:])则仅对class token的768维特征归一化,输出[8,768]供分类头使用。这种设计能避免patch tokens统计信息干扰,确保class token特征分布稳定,符合ViT"仅用class token分类"的核心思想。实验代码验证

2025-07-23 19:42:24 200

原创 LoRA 低秩矩阵实现参数高效的权重更新

LoRA技术通过低秩分解实现参数高效更新,在不改变模型输入输出维度的前提下优化权重矩阵。该方法将原始大矩阵分解为两个小矩阵(A和B),先降维再升维,保持最终输出形状不变。相比全参数更新,LoRA显著减少计算量,推理时可合并权重矩阵避免额外开销。实验验证表明,LoRA线性层与标准线性层具有相同的输入输出维度(如[16,10,768]→[16,10,3072]),但参数更新量大幅降低。这种巧妙设计实现了计算效率和模型性能的平衡。

2025-07-23 18:47:08 322

原创 L0 范数、L1 范数和 L2 范数详解(归一化+正则化)

L1和L2范数是机器学习中常用的两种正则化方法,主要区别在于:L1范数(曼哈顿距离)能产生稀疏解,适用于特征选择和压缩感知;L2范数(欧几里得距离)使参数分布更均匀,有助于防止过拟合。L1对异常值更鲁棒但不可导,L2可导但对异常值敏感。实践中,L2常用于权重衰减和Ridge回归,而L1用于Lasso回归和特征选择。深度学习框架中L2是默认选择,因其计算高效且易于优化,而L1需要手动实现。根据任务需求可选择单一方法或结合使用(如ElasticNet)。

2025-07-22 20:34:33 484

原创 详解 @property 装饰器与模型数据类型检测

Python的@property装饰器可将方法转为属性调用,使代码更简洁直观。在模型数据类型检测中,该属性方法智能判断模型结构(包括并行训练时的包装情况),返回第一个卷积层的数据类型(如float32/float16)。这种机制确保了医学AI中数据与模型精度的一致性,支持混合精度训练。核心价值在于:统一调用方式、自动处理复杂情况、保障计算精度匹配,提升开发效率和模型可靠性。

2025-07-21 18:38:33 834

原创 详解 F.cross_entropy 与标签平滑的工作原理

本文详细解析了医学图像-文本匹配任务中F.cross_entropy(sim_i2t,targets,label_smoothing=0.1)损失函数的计算原理和应用。该函数结合交叉熵损失和标签平滑技术,通过softmax转换相似度分数并构建平滑标签分布,有效缓解医学场景中的过拟合问题。标签平滑(0.1系数)将部分概率分配给非目标类别,更贴合医学诊断的不确定性特征,特别适用于小样本数据集和症状重叠情况。文章通过PyTorch和手动实现验证了计算一致性,表明该方法能提升模型的泛化能力和鲁棒性,是医学AI中优化

2025-07-21 17:04:44 1006

原创 详解 model.load_state_dict():模型权重加载机制

本文介绍了PyTorch中model.load_state_dict()函数在医学AI领域的应用。该函数用于加载预训练模型权重,核心参数strict=True要求权重与模型结构完全匹配。文章详细解析了state_dict和checkpoint的概念,并提供了医学场景中的典型应用案例,包括迁移学习、中断训练恢复和模型集成。同时探讨了strict=False的使用场景、常见错误及调试技巧,如权重形状不匹配和参数名称不一致问题。最后给出了医学AI中的最佳实践建议,包括预训练模型选择、完整检查点保存和逐层解冻微调策

2025-07-21 16:26:45 668

原创 model.eval()推理模式详解

model.eval()是PyTorch中用于切换模型到评估模式的关键方法,主要作用于推理阶段。该方法会关闭Dropout层的随机丢弃功能,并固定BatchNorm层使用训练阶段累积的统计量,确保输出结果稳定可靠。评估时必须调用该方法,否则会导致推理结果不稳定(Dropout持续生效)或统计偏差(BatchNorm使用当前批次数据)。通常与torch.no_grad()配合使用,前者控制模型层行为,后者关闭梯度计算以提升效率。在模型验证、测试及部署时需优先调用model.eval()来保证评估准确性。

2025-07-21 12:01:41 530

原创 PyTorch Lightning(PL)通过约定的生命周期方法自动管理训练流程。

本文介绍了PyTorchLightning(PL)框架的"隐形流程"设计特点。PL通过约定优于配置的原则,定义了一系列生命周期钩子方法(如training_step、validation_step等),在调用trainer.fit()时会自动按顺序执行这些方法,形成一个完整的训练闭环。文章详细解析了数据流动的核心流程(特征提取、融合、损失计算、参数更新)和PL框架的模块化优势,并提供了手动实现训练循环的示例代码。最后总结了理解PL模型运行机制的关键:数据流向、框架约定的执行顺序和模块化设

2025-07-16 11:36:53 1402

原创 深入理解余弦退火:让模型训练更高效的学习率调度策略

摘要:余弦退火学习率调度策略通过模拟余弦曲线实现学习率平滑衰减,解决了固定学习率训练中的收敛问题。该策略结合Warmup(预热)机制,先线性升温再余弦降温,能有效提升模型训练稳定性。相比传统阶梯式下降,余弦退火具有过渡平滑、能逃离局部最优等优势,特别适用于大型模型微调和长周期训练任务。PyTorch提供了现成实现,配合5%-10%的Warmup步数和合理的最小学习率设置,可显著提升各类深度学习任务的训练效果。

2025-07-15 19:08:51 635

原创 代码解析:学习率日志记录的作用与实现

PyTorch Lightning中通过self.log('lr_abs',lr,...)记录学习率对训练监控至关重要。该操作将学习率显示在进度条并写入日志,参数包括指标名称、当前学习率值及记录选项。学习率作为关键超参数,影响模型收敛速度和性能,其动态调整(如余弦退火)需要监控验证。记录学习率有助于诊断训练问题(如震荡或停滞)、复现实验,并能结合损失曲线分析优化效果。最佳实践包括监控多参数组学习率、分析学习率与损失关系,以及实施分阶段学习率策略。这一简单操作显著提升了训练过程的透明度和可调试性。

2025-07-15 18:24:54 610

原创 详解 PyTorch 中 self(...) 的神秘力量:不必显式写 __call__ 也能调用的秘密

摘要:PyTorch模型可以直接通过self(inputs)调用而无需显式定义__call__方法,这是因为所有模型都继承自nn.Module基类。该基类已实现__call__方法,它会自动调用用户定义的forward方法,并处理前后向钩子等扩展功能。这种设计简化了代码(直接self()调用)、支持灵活扩展(通过钩子机制)并统一了模型调用接口。本质上是PyTorch将forward逻辑封装在基类的__call__中,使开发者只需关注核心计算逻辑。

2025-07-15 18:00:35 346

原创 交叉熵损失F.cross_entropy在分类模型中的应用

交叉熵损失通过比较模型预测分布与真实分布来惩罚差异。具体步骤:1)将相似度矩阵转换为概率分布;2)真实标签采用独热编码;3)计算交叉熵损失(预测错误时惩罚更大)。标签平滑可减轻极端预测的惩罚,防止过拟合。该机制实现了对比学习的核心思想:拉近正样本相似度,推远负样本相似度。交叉熵损失对错误预测的惩罚呈对数增长,有效驱动模型学习正确匹配。

2025-07-15 17:36:50 915

原创 详解序数回归损失函数ordinal_regression_loss:原理与实现

本文探讨了医疗AI领域中序数回归损失函数的原理与实现。针对具有有序类别特性的任务(如疾病严重程度分级),传统的交叉熵损失无法利用类别间的顺序关系。文章重点解析了累积概率模型的实现方法:通过计算阈值和累积概率,构建概率矩阵并计算负对数似然损失。该方法能更好地保持类别顺序,提升模型对程度差异的敏感性。文中还提供了代码实现细节和医疗应用建议,强调该损失函数在疾病分级等场景中的优势,包括更好的校准性和临床意义。实践时需注意阈值初始化、模型输出设计和评估指标选择。

2025-07-15 14:29:28 731

原创 LoRA轻量级参数微调方法详解

LoRA是一种高效的模型微调方法,通过冻结预训练模型参数,仅训练低秩分解矩阵(A和B)来适配新任务。该方法可将训练参数量减少99%,显著降低显存需求,同时保持接近全量微调的性能。实现时需:1)冻结原始参数,仅解冻LoRA模块;2)配置优化器仅更新可训练参数;3)单独保存/加载LoRA权重。特别适合数据量有限的医疗等场景,既能复用预训练知识,又能快速适应特定任务,实现高效部署。典型应用中,1.2B参数的模型仅需训练1%的参数(12.5M)。

2025-07-15 13:15:13 417

原创 加载模型权重:load_state_dict详解

load_state_dict是PyTorch加载模型权重的核心方法,用于将预训练权重加载到模型中。它通过字典结构state_dict(包含参数名和对应张量)实现模型复用、断点续训等功能。方法支持strict模式参数,严格检查参数匹配性。常见应用包括迁移学习、训练恢复和部分权重加载。使用时需注意参数名称/形状匹配问题,可通过strict=False或过滤state_dict解决。该方法为模型复用和训练优化提供了重要支持。

2025-07-15 11:54:07 549

原创 PyTorch Lightning:让深度学习训练从 “重复造轮子” 到 “专注科研”

PyTorch Lightning 是 PyTorch 的高级封装框架,旨在简化深度学习训练流程。它将模型逻辑(LightningModule)、训练控制(Trainer)和功能扩展(Callbacks)三大核心组件标准化,使研究者无需重复编写训练循环、设备管理等工程代码。该框架支持自动日志记录、分布式训练、混合精度等特性,通过回调机制灵活扩展功能。其优势在于代码简洁性、实验可复现性,以及与PyTorch生态的无缝兼容,让用户专注于模型创新而非工程实现。典型使用场景包括医学图像分类等科研任务,能显著提升开发

2025-07-14 20:59:20 971

原创 深度学习实验日志:从配置到落地,用 SwanLab 追踪医学图像分类实验

摘要:本文介绍了使用SwanLab搭建医学图像分类实验日志系统的方法。针对深度学习研究中常见的实验记录混乱问题,SwanLab提供轻量级解决方案,可自动记录超参数、训练指标和可视化结果。文章详细讲解了日志目录准备、实验元数据配置、日志器初始化等步骤,并强调医学图像分类任务中记录数据不平衡、关键时间点和错误案例的重要性。该系统支持长期存储和结果复现,是医学AI研究的实用工具。

2025-07-14 17:40:03 932

原创 ROC 曲线:横纵坐标与绘制原理

ROC曲线是评估二分类模型性能的重要工具,通过绘制不同阈值下的真正例率(TPR)和假正例率(FPR)来反映模型的判别能力。TPR衡量模型正确识别正例的比例,FPR反映错误判断负例的比例。曲线越靠近左上角,模型性能越好;对角线对应随机猜测。AUC(曲线下面积)量化模型性能,1表示完美判别,0.5等同于随机。ROC曲线直观展示了模型在识别正例和避免误判之间的权衡,为模型选择提供可靠依据。

2025-07-13 17:36:29 579

原创 别再只看准确率了!分类模型评估的 6 个核心指标与实战指南:Macro/F1、OvR AUC

本文系统介绍了机器学习分类任务中的评估指标体系,包括混淆矩阵、准确率、精确率、召回率、F1分数、MCC、ROC曲线和AUC等核心指标。针对二分类和多分类问题,详细解析了每个指标的计算方法和适用场景,特别强调类别不平衡情况下的评估策略。通过Python代码示例展示了各指标的实际计算过程,并提供了指标选择的实用建议:类别平衡时可用准确率/MCC,不平衡时关注Recall/F1/MCC,多分类问题推荐Macro或Weighted平均。这些指标的综合应用能全面评估模型性能,为模型优化提供可靠依据。

2025-07-13 16:58:54 1395

原创 python文件操作基础知识:文件打开模式‘w‘‘w+‘‘a‘‘a+‘和字符编码encoding参数详解

Python文件操作模式主要包括:'w'写入(覆盖),'w+'读写(覆盖),'a'追加,'r'/'r+'只读/读写,'a+'追加读写。关键区别在于是否清空内容、读写权限和指针位置。字符编码通过encoding参数指定,常用UTF-8(支持多语言)、GBK(中文)等,确保跨平台兼容性和特殊字符支持。选择模式需考虑是否保留原内容、读写需求及指针位置管理。

2025-07-13 11:43:53 422

原创 深度学习配置文件详解:一份直观易懂的参数指南

深度学习项目中的配置文件是连接代码与实验的关键桥梁,它通过结构化方式记录训练所需的全部参数,实现实验灵活调整和结果可复现。配置文件主要包含三部分:1)数据配置(data),定义数据来源和处理方式;2)模型配置(model),指定模型结构和训练起点;3)训练配置(lightning),控制硬件使用、训练时长和日志记录。其中训练配置还包含随机种子、精度控制、梯度累积等关键参数。通过配置文件,开发者无需修改代码即可调整实验,所有参数集中管理,既方便修改又保证实验一致性,是团队协作和结果复现的重要工具。

2025-07-10 20:11:02 778

原创 详解 Python 配置文件加载:从命令行到 OmegaConf 的优雅实践

配置文件是一个文本文件(通常用 YAML 格式),用来存储程序的详细参数。model:type: "ViT" # 模型类型:Vision Transformerhidden_dim: 768 # 隐藏层维度num_layers: 12 # Transformer 层数num_heads: 12 # 注意力头数data:image_size: 224 # 图像尺寸text_max_length: 77 # 文本最大长度test:use_amp: True # 是否使用混合精度测试。

2025-07-10 16:30:14 902 1

原创 Python 命令行参数解析:args = parser.parse_args () 详解

args = parser.parse_args() 的作用是:将命令行输入的参数(如 --epochs 10 --lr 0.001)解析为 Python 对象(args),后续可通过 args.属性名 直接获取参数值。这种方式的优势在于:无需修改代码,即可动态调整程序参数;便于批量实验和脚本化运行;符合命令行工具的使用习惯,易于集成到调度系统

2025-07-10 10:39:09 532

原创 Python 中 map 与 lambda 在深度学习中的应用:以注意力机制为例

原始形状:[batch, seq_len, heads*dim_head],例如[2, 64, 512](heads=8,dim_head=64)。函数体:使用rearrange(来自einops库)将张量形状从[b, n, h*d]重塑为[b*h, n, d]。目标形状:[batch*heads, seq_len, dim_head],例如[16, 64, 64]。通过本文的解析,希望你能在今后的深度学习开发中灵活运用map与lambda,写出更简洁、高效的代码!避免重复编写相同逻辑的代码,提升可读性。

2025-07-02 14:31:47 420

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除