自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Day50 Tensorboard 使用介绍

你可以用它直观看到训练过程中的数据变化(比如损失值、准确率)、模型结构、数据分布等,不用盯着一堆枯燥的数字看,对新手非常友好。TensorBoard 的核心原理就是在训练过程中,把训练过程中的数据(比如损失、准确率、图片等)先记录到日志文件里,再通过工具把这些日志文件可视化成图表,这样就不用自己手动打印数据或者用其他工具画图。之前的内容中,我们在神经网络训练中,为了帮助自己理解,借用了很多的组件,比如训练进度条、可视化的loss下降曲线、权重分布图,运行结束后还可以查看单张图的推理效果。

2025-12-27 20:31:49 1007

原创 Day 49 预训练模型

其中ImageNet Top - 5 准确率是图像分类任务里的一种评估指标 ,用于衡量模型在 ImageNet 数据集上的分类性能,模型对图像进行分类预测,输出所有类别(共 1000 类 )的概率,取概率排名前五的类别,只要这五个类别里包含人工标注的正确类别,就算预测正确。因为提取的是通用特征,所以如果数据集数据少、尺寸小,就很难支撑复杂任务学习通用的数据特征。其中,训练过程中,为了不破坏最开始的特征提取器的参数,最开始往往先冻结住特征提取器的参数,然后训练全连接层,大约在5-10个epoch后解冻训练。

2025-12-26 17:58:35 683

原创 Day 48 Grad-CAM 和 Hook 函数

在传播过程中,钩子函数会被调用,我们可以在钩子函数中查看或修改梯度。这种形式很简约,只需要一行就可以定义一个函数,lambda 的核心价值在于用极简语法快速定义临时函数,避免为一次性使用的简单逻辑单独命名函数,从而减少代码冗余,提升开发效率。Hook 函数是一种回调函数,它可以在不干扰模型正常计算流程的情况下,插入到模型的特定位置,以便获取或修改中间层的输出或梯度。装饰器实现核心是修改原始函数的行为,在其基础上添加额外功能,控制流:被装饰函数 → 原始计算 → 回调函数,适合统一的、可复用的处理逻辑。

2025-12-23 20:09:18 698

原创 Day47 简单CNN

就好比你在学新知识,知识体系的基础一直在变,你就得不断重新适应,模型训练也是如此,这就导致训练变得困难,这就是内部协变量偏移问题。该策略通常不改变单次训练的样本总数,而是通过对现有图像进行多样化变换,使每次训练输入的样本呈现更丰富的形态差异,从而有效扩展模型训练的样本空间多样性。1. Batch Normalization:一般用于图像数据,因为图像数据通常是批量处理,有相对固定的 Batch Size ,能利用 Batch 内数据计算稳定的统计量(均值、方差 )来做归一化。-----深度学习可解释性。

2025-12-22 21:04:17 1007

原创 Day 46 训练和测试的规范写法

测试函数和绘图函数均被封装在了train函数中,但是test和绘图函数在定义train函数之后,这是因为在 Python 中,函数定义的顺序不影响调用,只要在调用前已经完成定义即可。之前我们用mlp训练鸢尾花数据集的时候并没有用函数的形式来封装训练和测试过程,这样写会让代码更加具有逻辑-----隔离参数和内容。- 动态维度指定:使用-1让PyTorch自动计算该维度的大小,但需确保其他维度的指定合理,避免形状不匹配错误。- 说明:第一个维度batch_size不变,后面的所有维度被展平为一个维度。

2025-12-21 19:47:02 968

原创 Day 45 图像数据与显存

1. 模型参数与梯度:模型的权重(Parameters)和对应的梯度(Gradients)会占用显存,尤其是深度神经网络(如 Transformer、ResNet 等),一个 1 亿参数的模型(如 BERT-base),单精度(float32)参数占用约 400MB(1e8×4Byte),加上梯度则翻倍至 800MB(每个权重参数都有其对应的梯度)。在 PyTorch 中,模型定义和输入尺寸的指定不依赖于 batch_size,无论设置多大的 batch_size,模型结构和输入尺寸的写法都是不变的。

2025-12-20 19:34:38 945

原创 Day 44 Dataset和Dataloader类

这里很难理解,为什么train_dataset[sample_idx]可以获取到图片和标签,是因为 datasets.MNIST这个类继承了torch.utils.data.Dataset类,这个类中有一个方法__getitem__,这个方法会返回一个tuple,tuple中第一个元素是图片,第二个元素是标签。在 Python 中,__getitem__和__len__ 是类的特殊方法(也叫魔术方法 ),它们不是像普通函数那样直接使用,而是需要在自定义类中进行定义,来赋予类特定的行为。

2025-12-19 21:02:27 761

原创 Day 43 早听策略和模型权重的保存

实际上,在早停策略中,保存 checkpoint(检查点) 是更优选择,因为它不仅保存了模型参数,还记录了训练状态(如优化器参数、轮次、损失值等),一但出现了过拟合,方便后续继续训练。同时每隔固定的训练轮次都会保存模型参数,下次可以接着这里训练,缩小训练的范围。深度学习中模型的保存与加载主要涉及参数(权重)和整个模型结构的存储,同时需兼顾训练状态(如优化器参数、轮次等)以支持断点续训。原理:保存模型参数、优化器状态(学习率、动量)、训练轮次、损失值等完整训练状态,用于中断后继续训练。

2025-12-18 20:35:23 767

原创 Day 42 复习日

信贷风险预测代码,考虑神经网络,借助AI改进。

2025-12-17 19:06:32 203

原创 Day 41 模型可视化与推理

nn.Linear(4, 10) 只定义了 “输入维度是 4,输出维度是 10”,但不知道输入的批量大小和其他维度,比如卷积层需要知道输入的通道数、高度、宽度等信息。1. Linear-1对应self.fc1 = nn.Linear(4, 10),表明前一层有4个神经元,这一层有10个神经元,每2个神经元之间靠着线相连,所有有4*10个权重参数+10个偏置参数=50个参数。之前我们说完了训练模型,那么现在我们来测试模型。该方法不显示输入层的尺寸,因为输入的神经网是自己设置的,所以不需要显示输入层的尺寸。

2025-12-16 18:45:33 830

原创 Day 40 GPU训练及类的call方法

self.fc1是一个实例化的对象,为什么具备了函数一样的用法,这是因为nn.Linear继承了nn.Module类,nn.Module类中定义了__call__方法。在上述代码中,循环里的 loss.item() 操作会在每个 epoch 都进行一次从 GPU 到 CPU 的数据同步和传输,以便获取标量损失值。可以注意到,self.fc1 = nn.Linear(4, 10) 此时,是实例化了一个nn.Linear(4, 10)对象,并把这个对象赋值给了MLP的初始化函数中的self.fc1变量。

2025-12-15 20:11:54 621

原创 Day 39 MLP神经网络的训练

根据数据量不同,梯度下降可分为批量(全样本计算,稳定但低效)、随机(单样本计算,快速但震荡)和小批量(批次样本计算,兼顾速度与稳定性)三类,其中小批量梯度下降是工程实践的首选(如心脏病项目默认采用)。这些概念在实际项目中形成完整闭环:以心脏病分类任务为例,先构建“输入层(特征)→隐藏层(ReLU激活)→输出层(Sigmoid激活)”的神经网络结构,用二元交叉熵作为损失函数量化预测误差,通过Adam优化器(基于梯度下降思想)迭代更新参数,最终得到能准确预测患病风险的模型。定义层数+定义前向传播顺序。

2025-12-14 20:22:55 881

原创 Day 38 官方文档的阅读

很多绘图工具都是调用的底层的绘图包,所以要想绘制出想要的图表,需要先了解底层绘图包的语法。此时模型已经建模完毕,这是一个经典的三分类项目,之前在基础班的项目三提到过sklearn提供的示例数据集,不了解的同学自行百度了解下该数据。先进入官方文档 https://pdpbox.readthedocs.io/en/latest/3. 官方文档:https://pdpbox.readthedocs.io/en/latest/2. PyPI 页面:https://pypi.org/project/PDPbox/

2025-12-13 20:23:55 357

原创 Day 37 文件的规范拆分和写法

2. 另一个是pylance,用于代码提示和类型检查,这个插件会根据你的代码中的类型注解,给出相应的提示和检查,比如你定义了一个函数,参数类型是int,那么当你传入一个字符串时,它会提示你传入的参数类型不正确。也就是说这个是写给解释器看的。如果直接运行这个文件,则__name__等于__main__,若这个文件被其他模块导入,则__name__不等于__main__。常常会看到if __name__ == "__main__"这个写法,实际上,每个文件都是一个对象,对象就会有属性和方法。

2025-12-12 18:24:51 724

原创 Day 36 模块和库的导入

这些接口是通过一种叫做Python/C API的技术实现的,其中C++的功能被封装成Python模块,使得Python用户可以像使用纯Python编写的库一样使用OpenCV。二进制文件是机器语言,处理器可以直接理解和执行无需翻译,二进制语言反汇编是很困难的,用二进制语言除了效果好外,也是让用户无法看到源代码,保护了自己的知识产权。OpenCV的核心是用C++编写,并且已经编译成二进制文件,编译后的二进制文件可以在不同操作系统上运行,Python中的用户通常不能直接看到方法的源代码。

2025-12-11 20:43:23 869

原创 Day 35 类的装饰器

类则是面向对象编程的核心载体,通过封装属性和方法定义对象的抽象模板,实例化后可生成具备独立状态和行为的具体对象,实现数据与逻辑的结构化统一。回顾一下,函数的装饰器是 :接收一个函数,返回一个修改后的函数。我们之前是用复用的思想来看装饰器的,换一个角度理解,当你想修改一个函数的时候,可以通过装饰器方法来修改而无需重新定义这个函数。2. 在类定义外部定义方法,然后把方法赋值给类的属性---这是一种动态方法,常在装饰器中使用,可以再外部修改类的方法。类也有修饰器,他的逻辑类似:接收一个类,返回一个修改后的类。

2025-12-10 19:23:37 416

原创 Day 34 类的定义和方法

所以,当你需要一个语法上存在的代码块,但又暂时不想在其中放入任何实际的逻辑时,pass 就是一个完美的占位符,它告诉解释器:“这里有一个代码块,但它什么也不做。比如self.name,就代表着:“自己的名字”,self等于“自己”,这个self指向类的实例化地址,传入的self.xx是它的属性。普通方法和init方法的差别在于,init方法是类的构造方法,当创建对象时,会自动调用init方法----只要你创建这个类对象了,这个init函数就会执行。普通方法是只有你调用类的这个方法的时候,函数才会执行。

2025-12-09 15:38:57 467

原创 Day 33 函数专题2:装饰器

-本质是如果让一个函数具备太多功能,那么他看起来就会比较乱,可读性比较差,如果把其中一部分相同甚至可以复用的功能用一个新的函数来调用,然后让2个函数同时实现,就会做到。装饰器函数返回的是wrapper函数,所以,在调用装饰器函数的时候,返回的还是wrapper函数,而不是被修饰的函数。可以看到,上述这个写法的时候,prime_nums()没有传入参数,如果函数有参数,那么必须给外部函数传入参数,也就是需要给外部的装饰器函数传入参数。所以装饰器本身就是函数中调用其他函数,实现先拆分函数,再合并函数的功能。

2025-12-08 18:58:43 265

原创 Day 32 函数专题1:函数定义与参数

如果在填充完所有能通过名字匹配上的明确定义的形参后,调用时还有剩余的关键字参数(即这些关键字参数的名字在函数定义中没有对应的明确形参名),那么这些“多余的”关键字参数就会被收集起来,形成一个字典 (dictionary),并赋值给 **kwargs 指定的那个变量(通常就是 kwargs)。当函数被调用时,Python 会先尝试用调用时提供的位置参数去填充函数定义中所有明确定义的、非关键字的形参 (也就是那些普通的,没有 * 或 ** 前缀的参数,包括有默认值的和没有默认值的)。

2025-12-07 21:22:32 1161 1

原创 Day 31 异常处理

如果找到匹配的,则执行该 except 块中的代码,然后继续执行整个 try-except 结构之后的代码(除非 except 块中又引发了新异常或执行了 return/break/continue 等)。在借助ai写代码的时候,经常会遇到try-except的异常处理模块,这是因为大部分大模型在后训练阶段都是经过强化学习训练的,为了确保结果的正确运行,只有采取 try-except的异常处理模块才能提高模型运行成功的概率。else 块中的代码不会被同一个 try 块的 except 子句捕获。

2025-12-06 20:58:40 923

原创 Day 30 元组和OS模块

os.walk会首先访问起始目录 (my_project),然后它会选择第一个子目录 (data)并深入进去,访问 data目录本身,然后继续深入它的子目录 (processed -> raw)。只有当 data 分支下的所有内容都被访问完毕后,它才会回到 my_project 这一层,去访问下一个子目录 (src),并对 src 分支重复深度优先的探索。虽然深度学习的核心在于模型构建和训练,但数据和模型的有效管理是项目成功的关键环节,而 os 模块为此提供了重要的工具。这种策略被称之为深度优先。

2025-12-05 18:13:54 624

原创 Day 29 机器学习管道 pipeline

在机器学习中,通常会按照一定的顺序对数据进行预处理、特征提取、模型训练和模型评估等步骤,以实现机器学习模型的训练和评估。转换器(transformer)是一个用于对数据进行预处理和特征提取的 estimator,它实现一个 transform 方法,用于对数据进行预处理和特征提取。估计器通过学习训练数据中的模式和规律来进行预测。--所以说管道工程最大的优势,是把操作和参数分割开来,只要熟悉整个流程,不需要阅读完整的代码去找对应操作的部分了,只需要在参数列表中设置好参数,就可以完成整个流程。

2025-12-04 14:41:30 737

原创 Day 28 复习日

kaggle泰坦尼克号预测。

2025-12-03 16:59:43 176

原创 Day 27 常见的降维算法

-- 2. PCA 降维 + 随机森林 (不使用 Pipeline) --- 为了保留95%的方差,需要的主成分数量: 12。

2025-12-03 15:13:36 1041

原创 Day 26 评价问题介绍

它通过计算每个待评价对象(如不同模型)与理想解和负理想解的距离,来确定其相对优劣,从而得到一个科学的排序。信息量越小(数据越一致),权重越低。之前涉及机器学习问题的时候,有很多评估指标 那么到底选谁作为主指标很困难(或者说不严谨),这时候我们需要一个客观公正的教练,他可以根据值的分布自行判断谁是最优的。● 指标的冲突性:不同的评估指标(如准确率、召回率、F1-Score、AUC等)往往是相互冲突的。● 缺乏统一标准:传统的指标筛选(如只看 F1-Score)过于片面,无法对所有指标进行整体的、科学的权衡。

2025-12-01 20:16:15 492

原创 Day 25 奇异值SVD分解

对于任何矩阵(如结构化数据可以变为:样本*特征的矩阵,图像数据天然就是矩阵),均可做等价的奇异值SVD分解,对于分解后的矩阵,可以选取保留前K个奇异值及其对应的奇异向量,重构原始矩阵,可以通过计算Frobenius 范数相对误差来衡量原始矩阵和重构矩阵的差异。应用:结构化数据中,将原来的m个特征降维成k个新的特征,新特征是原始特征的线性组合,捕捉了数据的主要方差信息,降维后的数据可以直接用于机器学习模型(如分类、回归),通常能提高计算效率并减少过拟合风险。c. 降噪:通常噪声对应较小的奇异值。

2025-11-30 19:30:36 383

原创 Day 24 常见的特征筛选算法

它的核心逻辑是:计算每个特征与目标变量之间的相关系数(范围在-1到1之间,值越大表示正相关越强,值越小表示负相关越强,接近0表示几乎无关),然后根据相关系数的绝对值大小,选择与目标变量相关性较高的特征,剔除相关性较低的特征。它的核心逻辑是:特征的方差反映了数据的变化程度,方差很小的特征几乎没有变化,对模型的预测帮助不大。因此,方差筛选会设定一个方差阈值,剔除方差低于这个阈值的特征,保留那些变化较大的特征,从而减少特征数量,提高模型效率。2. 特征组合:从n个特征中组合出m个特征,如pca等。

2025-11-29 15:45:01 510

原创 Day 23 推断聚类后簇的类型

【代码】Day 23 推断聚类后簇的类型。

2025-11-28 20:04:46 186

原创 Day 22 回归问题与置信区间

【代码】Day 22 回归问题与置信区间。

2025-11-27 20:19:53 155

原创 Day 21 常见聚类算法

实际论文中聚类的策略不一定是针对所有特征,可以针对其中几个可以解释的特征进行聚类,得到聚类后的类别,这样后续进行解释也更加符合逻辑。聚类常见算法有:kmeans聚类,dbscan聚类、层次聚类。4.原则t-sne或者pca进行2D或者3D可视化。2.选择合适的算法,根据评估指标调参。3.将聚类后的特征添加到原数据中。

2025-11-26 19:34:06 335

原创 Day 20 数组的常见操作和形状

所以一定要意识到,数组和矩阵没有关系,和物理空间含义也无关,他就是多维数据,这视角存在一个问题,如果把数组和几何含义联想,一旦遇到高维数组,怎么办?1.numpy 数组的创建:简单创建、随机创建、遍历、运算。这个维意思是你处在第几层,而不是空间维度的那个维。2.numpy 数组的索引:一维、二维、三维。3.SHAP 值的深入理解。

2025-11-25 18:18:30 159

原创 Day 19 多分类问题

【代码】Day 19 多分类问题。

2025-11-24 19:43:33 135

原创 Day18 复习日

之前学习的所有过程整理。

2025-11-23 20:07:38 171

原创 Day17 SHAP图绘制

一、shap各个绘图函数对于每一个参数的尺寸要求,首先需明确SHAP 值(

2025-11-22 20:02:29 1148

原创 Day 16 ROC曲线和PR曲线

---究其根本还是由模型能力决定的。这句话的前提是:ROC 通常是相对于“准确率(Accuracy)”而言的,而不是相对于 PR曲线而言的。PR 曲线下的面积(AP)之所以大,必须是因为模型在保持高召回率(Recall)的同时还能维持高精确率(Precision),如果你想做学术研究,或者对比两个算法谁更聪明(这就叫模型的“区分能力”),而不希望被测试数据的比例干扰,ROC 是最好的指标。PR 曲线是“焦点观”:它只关心正样本(坏人)的预测质量(我不关心你排除了多少好人,我只关心你抓进来的有没有抓错)

2025-11-21 17:36:59 849

原创 Day 15 不平衡数据的处理

在机器学习任务中(不包含深度学习),数据不平衡指的是分类问题中,不同类别数目不同导致模型会侧重于学习多数类的信息,而忽略少数类信息的学习。在标准的机器学习中,模型默认所有错误的代价都是相同的。例如,将一个多数类样本预测错和将一个少数类样本预测错,对模型的损失函数来说是一样的。选择对不平衡数据鲁棒的方法,比如集成学习方法,尤其是Adaboost,为了不平衡数据而诞生。2.算法层面:不改变数据,而是调整模型训练过程或使用对不平衡数据鲁棒的算法。数据层面:通过调整训练集的类别分布来缓解不平衡问题。

2025-11-19 16:08:29 279

原创 Day 14 多目标优化算法

这里关键是二者是互相矛盾的,比如你想找到理想中的伴侣,你关注身材和容貌,你想找到一个两个方向都最好的,此时二者并不矛盾,这就不属于多目标优化问题,你可以采用加权、或者引入新的评估指标来进行筛选。帕累托点也分成n个rank,第一次的都是rank1,去除rank2,第二次得到的是rank2,以此类推。多目标优化(MOO)和它的算法 MOEA,其核心思想是:既然目标相互冲突,找不到一个完美的“最好解”把所有这些“最不差的权衡解”(帕累托最优解)在目标空间中描绘出来,它们形成的一条边界线或曲面,就是。

2025-11-17 11:09:44 682

原创 Day 13 启发式算法

比如你要在一片看不见全局的山区找最低点(最优解),普通思路是只往下走,一旦走进四周都更高的小坑就误以为是终点(陷入局部最优),而退火算法会先以 “高温” 状态像精力旺盛的探险家,不管上坡下坡都敢尝试,哪怕当前能往下走也愿意往上迈两步,避免错过远处真正的山谷底;它的关键特点是 “降温有规律”(不能骤冷,否则和普通思路无差别)、“接受次优有概率”(温度越高,接受差选择的概率越大,温度越低概率越接近 0),核心就是通过 “先大胆探索、再逐渐保守,偶尔妥协次优” 的方式,跳出局部最优陷阱。

2025-11-15 13:47:08 813

原创 Day12 随机森林原理与贝叶斯优化可视化

但是昨天我们看了一下不同调参算法的思想,大家其实可以发现,模型虽然是黑盒子,但是很多思想还是非常有借鉴意义的,那我们就选一个最经典的随机森林模型,来说一说他背后的思想原理。因为决策树只是一种基于贪婪算法的模型,它的本质还是在做预测,但是很少看到预测问题基于探索思想。通常随机森林可以设置较大的值或不设置,让其他参数(如 min_samples_leaf)来控制生长,以获得更好的性能。那自然而然,我们就想了解,这种贪婪+集成的思想,不一定最好,有没有更好的,可以更好的找到全局最优解的路径呢?

2025-11-13 14:10:46 1114

原创 Day 11 常见的调参方式

----基于代理模型的思想,用简单的模型(高斯回归、决策树、神经网络)来替代复杂且计算成本高的模型,实现形式多样(sklearn、贝叶斯优化库、optuna)引入一个平替的模型来替代计算成本过高的原模型,优先考虑可以可以拟合万能公式的模型(神经网络 高斯回归 决策树) ,这个平替的模型称之为代理模型。随机搜索------效率较高,性价比很好(对收益小的参数减少参数空间)网格----遍历的思想,暴力穷举,必然是范围内的全局最优点,最慢。----基于采样的思想,大幅减少搜索的点。----最小mvp法则。

2025-11-11 13:45:14 375

空空如也

空空如也

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

TA关注的人

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