- 博客(50)
- 收藏
- 关注
原创 Python 训练营打卡 Day 49
它的核心目标是通过学习的方式,自动获取特征图在通道和空间维度上的重要性,进而对特征图进行自适应调整,增强重要特征,抑制不重要特征,提升模型的特征表达能力和性能。简单来说,它就像是给模型装上了 “智能眼镜”,让模型能够更精准地看到图像中关键的部分。CBAM 由两个主要部分组成:通道注意力模块(Channel Attention Module)和空间注意力模块(Spatial Attention Module)。最终CBAM就是通道注意力+空间注意力,接下来进行CNN与CBAM的结合训练。
2025-06-12 22:21:47
80
原创 Python 训练营打卡 Day 48
在 PyTorch 中,torch.randn()是一个常用的随机张量生成函数,它可以创建一个由标准正态分布(均值为 0,标准差为 1)随机数填充的张量。PyTorch 的广播机制(Broadcasting)是一种高效的张量运算特性,允许在不同形状的张量之间执行元素级操作(如加法、乘法),而无需显式扩展或复制数据。这种机制通过自动调整张量维度来实现形状兼容,使代码更简洁、计算更高效。最后两个维度必须满足:A.shape[-1] == B.shape[-2](即 A 的列数等于 B 的行数)
2025-06-11 21:56:42
191
原创 Python 训练营打卡 Day 47
我们关注的不只是精度的差异,还包含了同精度下训练时长的差异等,在大规模数据集上推理时长、训练时长都非常重要。可视化部分同理,在训练完成后通过钩子函数取出权重or梯度,即可进行特征图的可视化、Grad-CAM可视化、注意力热图可视化。在day 46代码的基础上,对比不同卷积层热力图可视化的结果。
2025-06-09 22:49:31
334
原创 Python 训练营打卡 Day 46
注意力机制是一种让模型学会「选择性关注重要信息」的特征提取器,就像人类视觉会自动忽略背景,聚焦于图片中的主体(如猫、汽车)。transformer中的叫做自注意力机制,他是一种自己学习自己的机制,他可以自动学习到图片中的主体,并忽略背景。我们现在说的很多模块,比如通道注意力、空间注意力、通道注意力等等,都是基于自注意力机制的。从数学角度看,注意力机制是对输入特征进行加权求和,输出=∑(输入特征×注意力权重),其中注意力权重是学习到的。所以他和卷积很像,因为卷积也是一种加权求和。
2025-06-08 21:58:11
937
原创 Python 训练营打卡 Day 45
你可以用它直观看到训练过程中的数据变化(比如损失值、准确率)、模型结构、数据分布等,不用盯着一堆枯燥的数字看,对新手非常友好,目前这个工具还在不断发展,比如一些额外功能在tensorboardX上存在,但是我们目前只需要要用到最经典的几个功能即可。如果只用 print(损失值) 或者自己用 matplotlib 画图,不仅麻烦,还得手动保存数据、写代码,尤其训练几天几夜时,根本没法实时盯着看。而 TensorBoard 能自动把这些数据 “存下来 + 画出来”,还能生成网页版的可视化界面,随时刷新查看!
2025-06-06 23:28:14
555
原创 Python 训练营打卡 Day 44
负责输出的预测部分的叫做Head。所以很自然的想到,如果最开始能有比较好的参数,即可能导致未来训练次数少,也可能导致未来训练避免陷入局部最优解的问题。其中,训练过程中,为了不破坏最开始的特征提取器的参数,最开始往往先冻结住特征提取器的参数,然后训练全连接层,大约在5-10个epoch后解冻训练。所以调用预训练模型做微调,本质就是 用这些固定的结构+之前训练好的参数接着训练,所以需要找到预训练的模型结构并且加载模型参数。比如一些调参后表现很好的cnn神经网络(固定的神经元个数+固定的层数等)。
2025-06-05 19:23:13
190
原创 Python 训练营打卡 Day 42
然而,标准的前向传播和反向传播过程通常是一个黑盒,我们很难直接访问中间层的信息。PyTorch 提供了一种强大的工具——hook 函数,它允许我们在不修改模型结构的情况下,获取或修改中间层的信息。这种形式很简约,只需要一行就可以定义一个函数,lambda 的核心价值在于用极简语法快速定义临时函数,避免为一次性使用的简单逻辑单独命名函数,从而减少代码冗余,提升开发效率。Hook 函数是一种回调函数,它可以在不干扰模型正常计算流程的情况下,插入到模型的特定位置,以便获取或修改中间层的输出或梯度。
2025-06-02 20:38:28
792
原创 实验一:PyTorch基本操作实验
在此次任务中,虽然数据是基于线性关系构造,但 Logistic 回归的目标是分类(将连续标签转换为二分类 ),其拟合的是分类边界,和原始用于生成数据的线性回归关系存在本质区别。噪声的存在使得数据偏离了原本纯粹由真实参数确定的关系,模型在训练过程中会学习到噪声的一些特征,干扰了对真实参数的逼近,导致训练参数和真实参数出现偏差。:此次训练设置的轮数为 10 轮,可能相对较少。传统回归问题:像线性回归,旨在建立自变量和因变量间的定量关系,预测一个连续数值,例如根据房屋面积、房龄等预测房价,重点在数值预测。
2025-06-02 19:05:07
1088
原创 Python 训练营打卡 Day 41
该策略通常不改变单次训练的样本总数,而是通过对现有图像进行多样化变换,使每次训练输入的样本呈现更丰富的形态差异,从而有效扩展模型训练的样本空间多样性。此外,在数据极少的场景长,常常用生成模型来扩充数据集,如GAN、VAE等,注意数据增强一般是不改变每个批次的数据量,是对原始数据修改后替换原始数据。2. 像素变换:如修改颜色、亮度、对比度、饱和度、色相、高斯模糊(模拟对焦失败)、增加噪声、马赛克。2. 输入通道数:输入图片的通道数,如1(单通道图片)、3(RGB图片)、4(RGBA图片)等。
2025-06-01 21:42:54
366
原创 Python 训练营打卡 Day 39
from torch.utils.data import DataLoader , Dataset # DataLoader 是 PyTorch 中用于加载数据的工具from torchvision import datasets, transforms # torchvision 是一个用于计算机视觉的库,datasets 和 transforms 是其中的模块# 数据预处理先归一化,再标准化transforms.ToTensor(), # 转换为张量并归一化到[0,1]
2025-05-30 19:39:10
418
原创 Python 训练营打卡 Day 38
100个类别又分为20个超类(如"鱼"超类包含"鲑鱼"、"鲨鱼"等子类)- 类别包括:飞机、汽车、鸟、猫、鹿、狗、青蛙、马、船、卡车。- 每个类别有6000张图像(5000训练+1000测试)- 包含100个细粒度类别的6万张32x32彩色图像。- 每个类别有600张图像(500训练+100测试)了解下CIFAR数据集,尝试获取其中一张图片。- 包含10个类别的6万张32x32彩色图像。- 图像分类任务基准测试。- 深度学习模型性能评估。- 计算机视觉算法研究。
2025-05-28 15:57:39
162
原创 Python 训练营打卡 Day 37
实际上,在早停策略中,保存 checkpoint(检查点) 是更优选择,因为它不仅保存了模型参数,还记录了训练状态(如优化器参数、轮次、损失值等),一但出现了过拟合,方便后续继续训练。同时每隔固定的训练轮次都会保存模型参数,下次可以接着这里训练,缩小训练的范围。深度学习中模型的保存与加载主要涉及参数(权重)和整个模型结构的存储,同时需兼顾训练状态(如优化器参数、轮次等)以支持断点续训。如果可以监控验证集的指标不再变好,此时提前终止训练,避免模型对训练集过度拟合。监控的对象是验证集的指标。
2025-05-27 16:02:55
291
原创 Python 训练营打卡 Day 36
定义一个多层感知机(MLP)模型,包含一个输入层、两个隐藏层和一个输出层self.fc1 = nn.Linear(30, 64) # 输入层到第一隐藏层self.relu = nn.ReLU() # 激活函数ReLUself.dropout = nn.Dropout(0.3) # 添加Dropout防止过拟合self.fc2 = nn.Linear(64, 32) # 第一隐藏层到第二隐藏层self.fc3 = nn.Linear(32, 2) # 第二隐藏层到输出层return x。
2025-05-26 19:36:31
159
原创 Python 训练营打卡 Day 35
对比 fc1.weight 和 fc2.weight 的统计信息 ,可以发现它们的均值、标准差、最值等存在差异。例如,如果发现权重标准差过大导致训练不稳定,可以尝试调整学习率,使权重更新更平稳;with是常见的上下文管理器,这样的使用方式还有用with打开文件,结束后会自动关闭文件。可以将模型中带有weight的参数(即权重)提取出来,并转为 numpy 数组形式,对其计算统计分布,并且绘制可视化图表。更新进度条,通过pbar.update(n)指定每次前进的步数n(适用于非固定步长的循环)。
2025-05-25 20:10:04
424
原创 Python 训练营打卡 Day 34
综上,数据传输和各种固定开销的总和,超过了 GPU 在这点计算量上通过并行处理所能节省的时间,导致了 GPU 比 CPU 慢的现象。在上述代码中,循环里的 loss.item() 操作会在每个 epoch 都进行一次从 GPU 到 CPU 的数据同步和传输,以便获取标量损失值。与day33采用的CPU训练不同,今天试着让模型在GPU上训练,引入import time比较两者在运行时间上的差异。经试验,思路一去除图片打印部分的情况下训练时间为:36.77s,思路二改变保存间隔情况下的训练时长为:44.6s。
2025-05-24 20:13:39
620
原创 Python 训练营打卡 Day 32
我们已经掌握了相当多的机器学习和python基础知识,现在面对一个全新的官方库,看看是否可以借助官方文档的写法了解其如何使用。训练完成后,选择pdpbox库的info_plots模块下的InteractTargetPlot进行解释性分析。官方文档的阅读和使用:要求安装的包和文档为同一个版本。官方文档的检索方式:github和官网。绘图的理解:对底层库的调用。普通方法所需要的参数。
2025-05-22 17:18:51
145
原创 Python 训练营打卡 Day 30
模块,这对代码的可读性和维护性都是有益的。使用建议:优先使用基本导入或者选择性导入,对于常用模块可以使用别名缩短名称,大型项目推荐使用相对导入保持结构清晰。:虽然代码看起来更简洁,但这种方法减少了代码的明确性。这种方式可能会导致命名空间污染,特别是当有多个模块都被这样导入时,很容易发生命名冲突。模块中的所有公开的函数和变量导入到当前的命名空间中,可以直接使用这些函数和变量而无需。模块,但它们在导入方式、作用域处理以及对命名空间的影响上有重要的区别。模块还是其他模块,尤其是当你导入了多个模块时。
2025-05-20 16:52:02
300
原创 Python 训练营打卡 Day 29
函数基本概念:函数就像是一个 “功能小盒子” ,把实现特定功能的代码块封装起来。比如想计算两个数相加,就可以把加法运算相关代码放到一个函数里。在程序运行中,给它合适的 “原料”(数据),它就能按设定好的方式加工处理,得到结果。像日常生活里,洗衣机是个 “函数”,放进去脏衣服(输入),它按程序运作,洗完给出干净衣服(输出)。用法定义:以 Python 语言为例,用def关键字定义函数,后面跟着函数名和圆括号(括号里可写参数,也可不写 ),再加上冒号,然后缩进写函数体(实现功能的代码 )。比如。
2025-05-19 20:46:08
329
原创 Python 训练营打卡 Day 28
类是对属性和方法的封装,可以理解为模板,通过对模板实例化可以实现调用这个类的属性和方法。比如创建一个随机森林类,然后就可以调用他的训练和预测方法。现在我们来学一下自己定义一个类,这会让我们对于类这个对象理解的更加深刻ps:类的操作很多,我们这里只说一些在深度学习领域最常见和通用的关键字class类名语法固定符号冒号(:)一个初始化函数__init__(self)注意:注意:init左右各有两个下划线__,需要传入self这个特殊的参数。# 第一种:类的初始化方法。
2025-05-18 16:52:01
289
原创 Python 训练营打卡 Day 27
1. 当装饰器 @logger 被应用到函数(如 multiply )时,Python会先执行 logger(func) ,其中 func 就是被装饰的函数。3. 当调用被装饰的函数(如 multiply(3,4) )时,实际上调用的是 wrapper 函数。在Python装饰器中,先返回函数结果再返回包装函数的顺序是由装饰器的工作机制决定的。所以装饰器本身就是函数中调用其他函数,实现先拆分函数,再合并函数的功能。3. 调用者最终得到的是原始函数的返回值,而不是包装函数本身。- 最后返回原始函数的结果。
2025-05-17 17:58:41
309
原创 Python 训练营打卡 Day 26
编写一个名为 calculate_circle_area 的函数,该函数接收圆的半径 radius 作为参数,并返回圆的面积。编写一个名为 calculate_average 的函数,该函数可以接收任意数量的数字作为参数(引入可变位置参数 (*args)),并返回它们的平均值。编写一个名为 print_user_info 的函数,该函数接收一个必需的参数 user_id,以及任意数量的额外用户信息(作为关键字参数)。函数返回计算得到的面积,如果长度或宽度为负数,函数应该返回0。函数返回计算得到的平均值。
2025-05-16 18:11:43
408
原创 Python 训练营打卡 Day 25
否则执行 else 块)。而在 try-except-else 结构中:如果 try 成功:try 块的代码会执行,然后 else 块的代码也会执行。如果 try 失败:try 块中出错前的代码会执行,然后匹配的 except 块的代码会执行(else 块不会执行)。逻辑说明: 首先,执行 try 块中的代码。如果 try 块中发生异常,则会查找并执行匹配的 except 块,else 块不会被执行。如果 try 块中没有发生任何异常,则会跳过所有 except 块,然后执行 else 块中的代码。
2025-05-15 19:31:24
232
原创 Python 训练营打卡 Day 24
但是,当你开始处理图像数据集、自定义数据加载流程、保存和加载复杂的模型结构时,os 模块就会变得非常有用。好的代码组织和有效的文件管理是大型深度学习项目的基石。随着深度学习项目变得越来越大、数据量越来越多、代码结构越来越复杂,会越来越频繁地用到 os 模块来管理文件、目录、路径,以及进行一些基本的操作系统交互。虽然深度学习的核心在于模型构建和训练,但数据和模型的有效管理是项目成功的关键环节,而 os 模块为此提供了重要的工具。元组的特点:有序,可以重复,这一点与列表一样,但是元组中的元素不能更改。
2025-05-14 22:22:50
289
原创 Python 训练营打卡 Day 23
Pipeline的作用 :将多个预处理步骤按顺序组合成一个连贯的工作流,确保数据按照指定顺序被处理。为了方便管理机器学习的一些步骤,我们可以使用pipeline来构建一个完整的机器学习流水线。尝试整理机器学习的处理顺序,看能不能制作出适合所有机器学习的pipeline。以信贷风险预测数据集为例。
2025-05-14 11:47:53
128
原创 Python 训练营打卡 Day 21
高维数据难以直接可视化(如超过3维),通过降维(如PCA、t-SNE、UMAP)投影到2D/3D空间,揭示数据分布、聚类或流形结构。适用的算法有:t-SNE(非线性可视化)、PCA(线性全局结构)、UMAP(高效非线性)。适用算法:PCA、LDA(有监督分类场景)、Autoencoder(深度学习方法)。适用算法:PCA(最大化方差去噪)、ICA(独立成分分析)。:有监督任务中,通过降维增强类别可分性(如投影到判别性更强的子空间)。适用算法:LDA(优化类间距离)、NCA(邻域成分分析)。
2025-05-11 18:07:09
441
原创 Python 训练营打卡 Day 20
对于任何矩阵(如结构化数据可以变为:样本*特征的矩阵,图像数据天然就是矩阵),均可做等价的奇异值SVD分解,对于分解后的矩阵,可以选取保留前K个奇异值及其对应的奇异向量,重构原始矩阵,可以通过计算Frobenius 范数相对误差来衡量原始矩阵和重构矩阵的差异。应用:结构化数据中,将原来的m个特征降维成k个新的特征,新特征是原始特征的线性组合,捕捉了数据的主要方差信息,降维后的数据可以直接用于机器学习模型(如分类、回归),通常能提高计算效率并减少过拟合风险。奇异值分解SVD是特征降维中非特征筛选的一种方法,
2025-05-10 15:31:35
161
原创 Python 训练营打卡 Day 19
它的核心逻辑是:计算每个特征与目标变量之间的相关系数(范围在-1到1之间,值越大表示正相关越强,值越小表示负相关越强,接近0表示几乎无关),然后根据相关系数的绝对值大小,选择与目标变量相关性较高的特征,剔除相关性较低的特征。它的核心逻辑是:特征的方差反映了数据的变化程度,方差很小的特征几乎没有变化,对模型的预测帮助不大。因此,方差筛选会设定一个方差阈值,剔除方差低于这个阈值的特征,保留那些变化较大的特征,从而减少特征数量,提高模型效率。利用皮尔逊相关系数筛选;以心脏病数据集为例,先运行之前的代码。
2025-05-09 12:28:50
442
原创 Python 训练营打卡 Day 18
以Day 17中的心脏病数据集为例,首先进行数据的预处理。删除聚类标签列并用随机森林模型进行训练。找四个重要特征判断是离散型还是连续型。生成的特征分布图如下。分别筛选每个簇的数据。
2025-05-08 17:55:07
378
原创 Python 训练营打卡 Day 17
无监督学习中的聚类可以发现数据中的模式,并对每一个聚类后的特征可视化,以此得到新的特征。以心脏病数据集为例,首先进行。以下是三种常见的聚类评估指标的介绍,主要用来评估聚类的质量以及簇的分离与紧凑程度。2. 选择合适的算法,根据评估指标调参,k-means聚类中选择的是k值进行调参。4. 使用PCA进行2D或3D可视化。3. 聚类后的特征添加到原数据中。
2025-05-07 16:52:18
202
原创 Python 训练营打卡 Day 14
数组结构:形状为(n_samples, n_features),其中:n_samples是测试集样本数量(X_test的行数),n_features是特征数量(X_test的列数),每个值表示对应特征对该样本预测结果的贡献度。解读示例:正值表示该特征增加了预测值,负值表示该特征降低了预测值,绝对值越大表示影响越大。具体来说:对于回归问题: shap_values 中的每个值表示对应特征对该样本预测结果的数值影响,对于分类问题: shap_values 会返回一个列表,每个元素对应一个类别的SHAP值。
2025-05-03 17:52:43
252
原创 Python 训练营打卡 Day 13
在处理类别不平衡的数据集时,标准机器学习算法(如默认的随机森林)可能会过度偏向多数类,导致对少数类的预测性能很差。随机过采样的缺点是,它可能会增加训练集的大小,从而增加训练时间。首先是随机采样处理,随机过采样是从少数类中随机选择样本,并将其复制后添加到训练集。smote过采样:是合成样本的方法,核心思想是通过在少数类样本的特征空间中进行插值来合成新的样本。修改分类阈值:改变模型最终评估结果时的阈值(或门槛),从而影响最终的评估结果。随机过采样的优点是,它可以增加少数类的样本数,从而提高模型的泛化能力。
2025-05-02 16:19:54
915
原创 Python 训练营打卡 Day 12
实现逻辑:设想一群粒子在解空间中飞行。每个粒子有自己的位置(对应问题的一个解)和速度。粒子根据自身历史最优位置(pbest)和群体历史最优位置(gbest)来调整自己的速度和位置。速度更新公式会综合考虑粒子当前速度、粒子自身与 pbest 的距离、粒子与 gbest 的距离。粒子不断飞行调整位置,逐渐接近最优解。用一个贴近生活的比喻,就像一群鸟在找食物,每只鸟(粒子)知道自己飞的最好位置(找到过食物最多的地方),也知道整个鸟群飞的最好位置(鸟群里某只鸟找到最多食物的地方)。
2025-05-01 16:56:01
167
原创 Python 训练营打卡 Day 11
数据类型显示为 'object' 的有 ‘Home Ownership’, ‘Years in current job’, ‘Purpose’, ‘Term’,这些列通常是分类变量或文本数据。- 原理:基于贝叶斯定理,使用代理模型(如高斯过程)来指导参数搜索。以LightGBM和KNN为例,分别进行网格搜索与贝叶斯优化的调参。- 如果使用交叉验证调参 → 用方法二(最大化训练数据)- 原理:在预定义的参数网格上穷举所有可能的参数组合。- 适合高维参数空间和昂贵评估的场景。- 适合参数空间较小的情况。
2025-04-30 19:31:05
198
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人