- 博客(46)
- 收藏
- 关注
原创 Day 46 通道注意力机制
在深度学习中,注意力机制(Attention Mechanism) 是让模型学会“关注重点”的方法。正如人类在看图时会自动聚焦于主体(如猫、车、人脸),而忽略背景,模型也希望学会同样的能力。常见的通道注意力其中,以SE 注意力最为经典。
2026-01-15 23:47:04
57
原创 Day 43 Grad-CAM
张量钩子允许直接监听和修改张量的梯度,它分为 `register_hook`和`register_full_backward_hook`分别用于监听张量的梯度和在完整的反向传播过程中监听张量的梯度(PyTorch 1.4+)。其中回调函数作为参数传入,所以在定义的时候一般用callback来命名,在 PyTorch 的 Hook API 中,回调参数通常命名为 hook。Hook 函数是一种回调函数,它可以在不干扰模型正常计算流程的情况下,插入到模型的特定位置,以便获取或修改中间层的输出或梯度。
2026-01-11 11:30:13
802
原创 Day 40 图像数据与显存
1. 模型参数与梯度:模型的权重(Parameters)和对应的梯度(Gradients)会占用显存,尤其是深度神经网络(如 Transformer、ResNet 等),一个 1 亿参数的模型(如 BERT-base),单精度(float32)参数占用约 400MB(1e8×4Byte),加上梯度则翻倍至 800MB(每个权重参数都有其对应的梯度)。其中通道数表示颜色含义。彩色图,每个像素信息有三个通道组成,每个通道数值还是0~255,其颜色信息可由一个三元组(R,G,B)表示。3.图像相关的神经网络。
2026-01-09 22:56:50
279
原创 Day 39 Dataset和Dataloader类
返回单条数据((数据,标签) 形式),是数据读取的核心逻辑。中的单条数据组装成批次(batch),并提供高效的迭代方式。作业:了解cifar数据集,并从中取出一张图片。是 PyTorch 提供的抽象基类(:返回数据集的总样本数(让。2.Dataloader类。的封装,核心作用是将。1.Dataset类。
2026-01-09 00:10:44
183
原创 Day 38 早停策略和模型权重的保存
在训练模型时同时监控模型在验证集上的指标,若指标在验证集上不在变好,则终止训练。作业:对信贷数据集进行训练后保存权重,加载权重后,继续训练50轮,并采取早停策略。
2026-01-08 22:35:29
213
原创 Day 37 模型可视化与推理
2.torchsummary库的summary方法。3.torchinfo库的summary方法。模型评估在大模型领域叫模型推理。1.nn.model自带方法。作业:修改超参数的值对比结果。利用tqdm库观察进度。
2026-01-08 21:26:10
232
原创 Day 36GPU的训练以及类的call方法
本身是轻量级操作(只是把一个数值存到列表里,耗时极短,可能只有微秒级)。而深度学习训练的主要耗时在:GPU 的前向 / 反向传播(占总耗时的 95% 以上);且剩余时长本身是估算值,系统动态随机因素影响。1.模型在 GPU 上训练,主要是将模型和数据迁移到 GPU 设备上。2.__call__方法让类的实例拥有了 “函数调用” 的能力。1. 数据传输开销 (CPU 内存 <-> GPU 显存)GPU在计算的时候,相较于cpu多了3个时间上的开销。2. 核心启动开销 (GPU 核心启动时间)
2025-12-20 00:00:00
248
原创 Day 33 文件的规范拆分和写法
注:对于规范的python文件,首行有:#--coding = utf-8--,即默认编码格式为utf-8。一个项目的所有文件都放在一个根文件夹里,例如。作业:对心脏病数据集进行文件管理。
2025-12-16 23:50:16
274
原创 Day 32模块和库的导入
模块的核心作用是代码复用和命名空间隔离—— 把功能相关的代码放在一个文件里,既方便重复调用,也避免不同功能的代码变量 / 函数名冲突。包的核心作用是分层管理模块,把功能相关的多个模块归到同一个目录下,让代码结构更清晰。运行对应的文件直接在终端运行对应的 python main.py / python model/main.py。2.`main.py`在根目录,`circle.py`在子目录。而`circle.py`在根目录,`main.py`在子目录。2.从库中导入特定的项。3.非标准导入整个库。
2025-12-15 23:40:09
323
原创 Day 31 类的装饰器
类装饰器本质上是一个可调用对象(通常是函数),它接收被装饰的类作为参数,对这个类进行修改(比如添加属性、方法,或修改现有行为),最后返回修改后的类(或一个新类)。的作用就是:在类的实例方法中,获取当前对象所属类的名称(字符串)。优势是动态性,能适配继承场景。3.也可用类定义装饰器。
2025-12-14 23:40:08
155
原创 Day 30 类的定义与方法
定义了一类事物的共同属性(比如人的姓名、年龄)和行为(比如走路、说话):类的具体存在,比如 “张三” 是 “人” 这个类的一个实例。,创建对象时自动执行,用于初始化属性。:类 / 对象的特征(变量),比如。:类 / 对象的行为(函数),比如。
2025-12-13 16:41:47
280
原创 Day 29 装饰器
2.编程里的 “开闭原则” 是 “对扩展开放,对修改关闭”—— 原函数如果是稳定的核心逻辑(比如已经测试通过的计算逻辑),修改它可能引入新 bug;如果原函数是第三方库的函数(你改不了源码),直接修改的方式就完全行不通。1.核心逻辑和辅助逻辑分离:原函数只关注 “做什么”(比如乘积、求和计算),装饰器关注 “额外做什么”(比如计时),代码职责清晰,可读性和可维护性大幅提升。装饰器(Decorator) 本质上是一个接收函数 / 类作为参数,并返回新函数 / 类的高阶函数,它可以。
2025-12-13 15:38:56
264
原创 Day 27 异常处理
Python 中的try-except机制是异常处理的核心,用于捕获和处理程序运行时的错误(如语法正确但执行失败的情况,例如除零、索引越界、文件不存在等),避免程序直接崩溃,同时允许开发者自定义错误处理逻辑。
2025-12-10 22:53:06
228
原创 Day 26元组与OS模块
os 模块来管理文件、目录、路径,以及进行一些基本的操作系统交互。核心解决路径处理、文件 / 目录管理、系统命令执行、环境变量操作等问题,是编写跨平台脚本、自动化工具的必备模块。
2025-12-09 23:35:39
175
原创 Day 25 pipeline管道
估计器的特点是有状态的,即它们在训练过程中存储了关于数据的状态信息,以便在预测阶段使用。因此,估计器需要在训练集上进行训练,并使用训练得到的模型参数对新数据进行预测。是一个用于对数据进行预处理和特征提取的 estimator,它实现一个 transform 方法,用于对数据进行预处理和特征提取。转换器的特点是无状态的,即它们不会存储任何关于数据的状态信息(指的是不存储内参)。机器学习的管道(Pipeline)机制通过将多个转换器和估计器按顺序连接在一起,可以构建一个完整的数据处理和模型训练流程。
2025-12-08 22:31:23
514
原创 Day 24 常见的降维算法
特征间高度相关(多重共线性),即许多特征本质上表达相似信息,模型训练不稳定,如经济学中GDP、消费、投资等变量强相关,用PCA提取“经济活动强度”主成分;常见的降维算法(Dimensionality Reduction Algorithms)主要用于在保留数据主要特征的同时,减少特征维度,从而降低计算复杂度、缓解“维度灾难”、提高模型泛化能力。二、非线性降维方法:t-SNE(t分布随机领域嵌入)、LLE(局部线性嵌入)、MDS(多维尺度分析)等。一、线性降维方法:主成分分析、因子分析、线性判别分析。
2025-12-07 22:03:26
330
原创 Day 23 奇异值分解(SVD)
A(GPT):降维的目标是 减少维度、提高泛化性与计算效率,而不是保证精度一定提高;在高维稀疏数据上,SVD 的优势更明显;在中低维、信息较集中的数据集上,精度略降是正常的 trade-off(信息压缩 vs 模型复杂度)。几何解释:假设 A 是二维空间到二维空间的线性变换。先由V^T完成旋转/反射,再由 Σ 完成沿主方向进行拉伸/压缩,最后由 U完成旋转。进阶思考:Q:为什么SVD的精度有所下降?
2025-12-06 23:59:52
388
原创 Day 22 推断聚类后簇的类型
先用所有特征进行聚类,然后把聚类结果(簇标签)当作“目标变量”,把原始特征作为输入变量。再训练一个监督学习模型(如决策树、随机森林),通过特征重要性(Feature Importance)来识别哪些特征最能区分不同簇。例如:要分析“消费者购买习惯”,只使用购买金额、频率、种类等特征,而不使用年龄或行业等无关特征。聚类算法(如 KMeans)本身只会根据特征相似性分组,而不会自动告诉你“这些组代表什么”。其核心思想为把聚类结果当标签,再反过来训练监督模型解释它,通过监督学习的可解释性,来反推聚类的结构。
2025-12-05 23:25:47
227
原创 Day 21 常见的聚类算法
聚类算法(Clustering Algorithm)是一种无监督学习(Unsupervised Learning)方法,用于将样本数据根据相似度划分为若干组(簇,clusters),使得同一簇内的数据对象彼此相似,而不同簇之间的数据差异较大。其中,ε为邻域半径,MinPts是形成高密度区域所需最少样本数,核心点:邻域内点数 ≥ MinPts;K-Means 是一种基于最小化簇内平方误差(SSE)的划分式聚类方法。目标是将 n 个样本划分为 K 个簇,使得每个样本距离其簇中心(质心)尽可能近。
2025-12-04 22:44:02
400
原创 Day17 shap图的绘制
SHAP 属于模型事后解释的方法,它的核心思想是计算特征对模型输出的边际贡献,再从全局和局部两个层面对“黑盒模型”进行解释。在SHAP中进行模型解释需要先创建一个explainer,SHAP支持很多类型的explainerdeep:用于计算深度学习模型,基于DeepLIFT算法,支持TensorFlow / Keras。gradient:用于深度学习模型,综合了SHAP、集成梯度、和SmoothGrad等思想,形成单一期望值方程,但速度比DeepExplainer慢,并且做出了不同的假设。
2025-11-23 23:21:05
840
原创 Day 16 ROC与PR曲线
可以看到,LightGBM在调整阈值提高召回率时精确率下降幅度较为缓慢,而且AUC值为0.7525,是四个模型中最大的,说明其泛化能力最强,且对少数类(在实际中该数据集真正关心的)的预测效果较好,AP=0.6339.可以看到,模型无论在ROC还是PR曲线上表现均很差,前者表示模型泛化能力差,甚至不如随即预测,后者表示模型在预测少数类(在实际中该数据集真正关心的)上的准确率也较低,它在保持高召回率时,精确率大大降低。综合四个模型,LightGBM表现最佳,优先采样LightGBM对本数据集做预测。
2025-11-21 23:51:53
313
原创 Day 15 不平衡数据的处理
对心脏病数据集利平衡采样的方法,并且结合交叉验证+超参数调优,来达到学习效果更好的目的。对于本数据集,核心需求:尽量不漏掉违约用户(高 Recall),同时减少误判正常用户(合理 Precision)。1.数据预处理3.Smote+ENN平衡采样4.交叉验证+网格搜索最优参数5.类别权重调整6.阈值调整进阶思考:仅ENN欠采样核心原因:参数设置导致少数类被 “误删”1. sampling_strategy='all' 的作用。
2025-11-20 23:50:18
638
原创 Day 14 多目标优化算法
评价方式:帕累托曲线:多目标优化中“最佳折中解”的集合。任何一个帕累托曲线上的解,都不能在不让某个目标变差的情况下让另一个目标变得更好。换句话说,每个点都代表在目标间取得不同的平衡,没有解能在所有目标上同时优于曲线上的点。没有单一的最优解,而是一个“最优折中解集合”(Pareto front),每个解代表不同的目标权衡,即一组帕累托最优解。多目标优化不仅可以用于参数选择,还特别适合有多个冲突指标的调参任务,比传统调参方法更合理、更有意义。进化算法最大的问题之一:随着迭代,可能丢失优秀解。
2025-11-17 16:40:00
583
原创 Day 12 随机森林原理与贝叶斯优化可视化
初始化:采样若干点 {x₁, x₂, …, xₖ},评估真实函数 f(x)循环:1️⃣ 用已有 (x, f(x)) 数据训练代理模型(通常是 GP)2️⃣ 根据采集函数计算所有点的“潜在价值”3️⃣ 选择下一个点 x_next = argmax(acquisition(x))4️⃣ 在 x_next 上真实评估 f(x_next)5️⃣ 将结果加入样本集,更新模型直到:达到最大迭代次数或收敛输出:当前最优参数 x_best。
2025-11-13 23:22:28
384
原创 Day 11 常见的调参方式
结果上看,三种调参结果均不如baseline的结果,这是因为在训练时参数空间设置较小导致调参找不到优秀的参数,而baseline应用的参数基于前人的工作已经被设置成较好的值了。随机搜索------基于采样的思想,效率较高,性价比很好(对收益小的参数减少参数空间),替代复杂难优化的原始模型(又称 “真实模型”),以高效完成预测、优化或采样任务。网格----遍历的思想,暴力穷举,必然是范围内的全局最优点,最慢。对于信贷数据的LightGBM 尝试用下贝叶斯优化、网格搜索。贝叶斯优化------基于。
2025-11-11 23:20:09
402
原创 Day 9 热力图和子图的绘制
所有具体的绘图操作(如 plot(), scatter(), set_title(), set_xlabel())都是在这个对象上进行的。指的是整个画布对象,axes指的是里面的子图对象(坐标轴对象,可以在轴上绘图所以叫坐标轴对象)。当创建多行多列的子图布局时,plt.subplots(n_rows, n_cols) 会返回一个。负责管理整个绘图区域的大小、分辨率、总标题(fig.suptitle())以及子图的布局。矢量图靠数学公式描述,放大无失真,适配场景不同。axes是内容,对应实际的绘图区域,
2025-11-09 20:52:07
413
原创 Day 7 复习日+如何查看函数参数
鼠标悬停(适合已经熟悉这个函数,只是参数有些忘记了)函数参数具体功能还是问AI感觉门槛最低。利用电脑插件的大模型功能(解释)来解读。复习可视化,查看不同参数带来的影响。jupyter魔法命令。Ctrl进入内部查看。
2025-11-07 20:57:10
223
空空如也
python导入pingouin包
2023-06-15
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅