
python训练营打卡内容
文章平均质量分 76
zx43
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
神经网络调参指南
模型参数:linear.weight: tensor([[ 0.3268, -0.5784]])linear.bias: tensor([0.6189])随机种子之前我们说过,torch中很多场景都会存在随机数介绍一下这个随机函数的几个部分上述种子可以处理大部分场景,实际上还有少部分场景(具体的函数)可能需要自行设置其对应的随机种子。日常使用中,在最开始调用这部分已经足够我强烈建议你自己在纸上,用笔推导一下简单的神经网络的训练过程。我们都知道,神经网络的权重需要通过反向传播来实现更新,那原创 2025-06-12 20:52:06 · 899 阅读 · 0 评论 -
复习日!!
Epoch 35/50 完成 | 耗时: 239.58s | 训练准确率: 79.89% | 测试准确率: 70.00%Epoch 10/50 完成 | 耗时: 19.32s | 训练准确率: 62.33% | 测试准确率: 72.50%Epoch 11/50 完成 | 耗时: 19.34s | 训练准确率: 62.33% | 测试准确率: 70.00%Epoch 18/50 完成 | 耗时: 36.65s | 训练准确率: 75.00% | 测试准确率: 70.00%原创 2025-06-11 22:35:07 · 543 阅读 · 0 评论 -
预训练模型 CBAM注意力
在更理想的情况下,如果能让 attention 图的值都趋近于 sigmoid 函数的反函数中对应输出为1的值,那么CBAM就近似于一个“直通车”(x * 1 = x),网络可以选择“忽略”它。给专家(预训练层) 设置一个极低的学习率(比如1e-5),告诉他们:“你们基本保持现状,只需要根据实习生的表现做一些微小的调整即可。但是你要注意,最后的卷积形式是 卷积--激活--池化--全连接,如果你放置前全连接前的话,cbam中的空间注意力会完全失效,因为此时空间维度不存在了,失去了寻找空间相关性的能力。原创 2025-06-10 20:34:35 · 775 阅读 · 0 评论 -
CBAM注意力
CBAM 是一种能够集成到任何卷积神经网络架构中的注意力模块。它的核心目标是通过学习的方式,自动获取特征图在通道和空间维度上的重要性,进而对特征图进行自适应调整,增强重要特征,抑制不重要特征,提升模型的特征表达能力和性能。简单来说,它就像是给模型装上了 “智能眼镜”,让模型能够更精准地看到图像中关键的部分CBAM 由两个主要部分组成:通道注意力模块(Channel Attention Module)和空间注意力模块(Spatial Attention Module)。原创 2025-06-09 20:00:19 · 379 阅读 · 0 评论 -
随机函数与广播机制
Softmax输出: tensor([[0.0712, 0.0626, 0.1332, 0.1275, 0.1605, 0.0882, 0.0890, 0.0898, 0.0871,在深度学习中经常需要随机生成一些张量,比如权重的初始化,或者计算输入纬度经过模块后输出的维度,都可以用一个随机函数来实现需要的张量格式,而无需像之前一样必须加载一张真实的图片。[ 0.4898, 1.4782, 0.2019, 0.0863]]),矩阵形状: torch.Size([3, 4])原创 2025-06-08 18:58:07 · 1193 阅读 · 0 评论 -
注意力热图可视化
可视化部分同理,在训练完成后通过钩子函数取出权重or梯度,即可进行特征图的可视化、Grad-CAM可视化、注意力热图可视化。热力图(红色表示高关注,蓝色表示低关注)半透明覆盖在原图上。捕获最后一个卷积层(原创 2025-06-07 21:12:17 · 619 阅读 · 0 评论 -
通道注意力
其中注意力机制是一种让模型学会「选择性关注重要信息」的特征提取器,就像人类视觉会自动忽略背景,聚焦于图片中的主体(如猫、汽车)。transformer中的叫做自注意力机制,他是一种自己学习自己的机制,他可以自动学习到图片中的主体,并忽略背景。我们现在说的很多模块,比如通道注意力、空间注意力、通道注意力等等,都是基于自注意力机制的。从数学角度看,注意力机制是对输入特征进行加权求和,输出=∑(输入特征×注意力权重),其中注意力权重是学习到的。所以他和卷积很像,因为卷积也是一种加权求和。原创 2025-06-06 21:32:17 · 1030 阅读 · 0 评论 -
Tensorborad
TensorBoard日志保存在: runs/cifar10_mlp_experiment_1 可以在命令行中进入目前的环境,然后通过tensorboard --logdir=xxxx(目录)即可调出本地链接,点进去就是目前的训练信息,可以不断F5刷新来查看变化。TensorBoard 的核心原理就是在训练过程中,把训练过程中的数据(比如损失、准确率、图片等)先记录到日志文件里,再通过工具把这些日志文件可视化成图表,这样就不用自己手动打印数据或者用其他工具画图。自动避免日志目录重复。原创 2025-06-05 20:31:17 · 1011 阅读 · 0 评论 -
预训练模型
模型年份提出团队关键创新点层数参数量ImageNet Top-5错误率典型应用场景预训练权重可用性LeNet-51998Yann LeCun等首个CNN架构,卷积层+池化层+全连接层,Sigmoid激活函数7~60KN/A手写数字识别(MNIST)无(历史模型)AlexNet2012Alex Krizhevsky等ReLU激活函数、Dropout、数据增强、GPU训练860M15.3%大规模图像分类PyTorch/TensorFlow官方支持VGGNet。原创 2025-06-04 20:12:50 · 1080 阅读 · 0 评论 -
DAY复习日
kaggle找到一个图像数据集,用cnn网络进行训练并且用grad-cam做可视化。,对水母图片进行分类,共6个类别。,对水母图片进行分类,共6个类别。进阶:并拆分成多个文件。原创 2025-06-02 21:42:25 · 158 阅读 · 0 评论 -
Grad-CAM
在深度学习中,我们经常需要查看或修改模型中间层的输出或梯度。然而,标准的前向传播和反向传播过程通常是一个黑盒,我们很难直接访问中间层的信息。PyTorch 提供了一种强大的工具——hook 函数,它允许我们在不修改模型结构的情况下,获取或修改中间层的信息。它的核心价值在于让开发者能够动态监听、捕获甚至修改模型内部任意层的输入 / 输出或梯度,而无需修改模型的原始代码结构。原创 2025-06-01 21:15:17 · 1164 阅读 · 0 评论 -
简单的CNN
在图像数据预处理环节,为提升数据多样性,可采用数据增强(数据增广)策略。该策略通常不改变单次训练的样本总数,而是通过对现有图像进行多样化变换,使每次训练输入的样本呈现更丰富的形态差异,从而有效扩展模型训练的样本空间多样性。Epoch: 11/20 | Batch: 100/782 | 单Batch损失: 0.7079 | 累计平均损失: 0.7308。Epoch: 11/20 | Batch: 200/782 | 单Batch损失: 0.6369 | 累计平均损失: 0.7565。原创 2025-05-31 20:24:09 · 846 阅读 · 0 评论 -
训练和测试的规范写法
Epoch: 10/20 | Batch: 100/782 | 单Batch损失: 0.7703 | 累计平均损失: 0.7477。Epoch: 10/20 | Batch: 200/782 | 单Batch损失: 0.6830 | 累计平均损失: 0.7431。Epoch: 10/20 | Batch: 300/782 | 单Batch损失: 0.7435 | 累计平均损失: 0.7627。原创 2025-05-30 20:42:22 · 784 阅读 · 0 评论 -
图像数据与显存
从这里开始我们进入到了图像数据相关的部分,也是默认你有之前复试班计算机视觉相关的知识,但是一些基础的概念我仍然会提。昨天我们介绍了minist这个经典的手写数据集,作为图像数据,相较于结构化数据(表格数据)他的特点在于他每个样本的的形状并不是(特征数,),而是(宽,高,通道数)# 先继续之前的代码from torch.utils.data import DataLoader , Dataset # DataLoader 是 PyTorch 中用于加载数据的工具。原创 2025-05-29 20:22:44 · 1000 阅读 · 0 评论 -
Dataset和Dataloader
维度DatasetDataLoader核心职责定义“数据是什么”和“如何获取单个样本”定义“如何批量加载数据”和“加载策略”核心方法(获取单个样本)、__len__(样本总数)无自定义方法,通过参数控制加载逻辑预处理位置在中通过transform执行预处理无预处理逻辑,依赖Dataset返回的预处理后数据并行处理无(仅单样本处理)支持多进程加载(典型参数root(数据路径)、transform(预处理)batch_sizeshuffle核心结论Dataset类:定义数据的内容和格式。原创 2025-05-27 19:46:18 · 670 阅读 · 0 评论 -
早停策略和模型权重的保存
训练进度plus: 100%|██████████| 50/50 [00:00<00:00, 648.00epoch/s, Train Loss=0.4614, Test Loss=0.4713]在第8轮,测试集损失已有1轮未改善。训练进度: 100%|██████████| 30000/30000 [00:22<00:00, 1322.08epoch/s, Loss=0.4614]对信贷数据集训练后保存权重,加载权重后继续训练50轮,并采取早停策略。过拟合的判断:测试集和训练集同步打印指标。原创 2025-05-26 20:24:18 · 430 阅读 · 0 评论 -
用神经网络对信贷项目进行预测
对之前的信贷项目,利用神经网络训练下,尝试用到目前的知识点让代码更加规范和美观。原创 2025-05-25 20:06:03 · 738 阅读 · 0 评论 -
DAY 35
nn.Linear(4, 10) 只定义了 “输入维度是 4,输出维度是 10”,但不知道输入的批量大小和其他维度,比如卷积层需要知道输入的通道数、高度、宽度等信息。但是在使用该方法时,input_size=(4,) 参数是必需的,因为 PyTorch 需要知道输入数据的形状才能推断模型各层的输出形状和参数数量。因此,要生成模型摘要(如每层的输出形状、参数数量),必须提供一个示例输入形状,让 PyTorch “运行” 一次模型,从而推断出各层的信息。之前我们说完了训练模型,那么现在我们来测试模型。原创 2025-05-24 21:23:15 · 898 阅读 · 0 评论 -
GPU训练和call方法
知识点回归:CPU性能的查看:看架构代际、核心数、线程数GPU性能的查看:看显存、看级别、看架构代际GPU训练的方法:数据和模型移动到GPU device上类的call方法:为什么定义前向传播时可以直接写作self.fc1(x)原创 2025-05-23 20:14:14 · 1033 阅读 · 0 评论 -
简单的神经网络
定义一个简单的全连接神经网络模型,包含一个输入层、一个隐藏层和一个输出层。定义层数+定义前向传播顺序class MLP(nn.Module): # 定义一个多层感知机(MLP)模型,继承父类nn.Moduledef __init__(self): # 初始化函数super(MLP, self).__init__() # 调用父类的初始化函数# 前三行是八股文,后面的是自定义的self.fc1 = nn.Linear(4, 10) # 输入层到隐藏层。原创 2025-05-22 21:25:34 · 571 阅读 · 0 评论 -
官方文档的阅读
参考pdpbox官方文档中的其他类,绘制相应的图,任选即可。官方文档的阅读和使用:要求安装的包和文档为同一个版本。官方文档的检索方式:github和官网。绘图的理解:对底层库的调用。普通方法所需要的参数。原创 2025-05-21 23:07:46 · 566 阅读 · 0 评论 -
文件的拆分和使用
尝试针对之前的心脏病项目,准备拆分的项目文件,思考下哪些部分可以未来复用。原创 2025-05-20 20:12:49 · 158 阅读 · 0 评论 -
模块与包的导入
模块(Module)本质:以.py结尾的单个文件,包含Python代码(函数、类、变量等)。作用:将代码拆分到不同文件中,避免代码冗余,方便复用和维护。包(Package)在python里,包就是库本质有层次的文件目录结构(即文件夹),用于组织多个模块和子包。核心特征:包的根目录下必须包含一个文件(可以为空),用于标识该目录是一个包。原创 2025-05-19 20:27:57 · 2492 阅读 · 0 评论 -
类的装饰器
所以你还是需要理解 装饰器本质就是一个语法糖,对类而言:@decorator 语法只是 MyClass = decorator(MyClass) 的简写,即使类已定义,仍可手动调用装饰器函数修改它。我们之前是用复用的思想来看装饰器的,换一个角度理解,当你想修改一个函数的时候,可以通过装饰器方法来修改而无需重新定义这个函数。ps:之前无论是函数还是类的装饰器,我们都发现是先有装饰器,再有类。总结:装饰器的核心是动态修改类 / 函数,而不改变原代码。类也有修饰器,他的逻辑类似:接收一个类,返回一个修改后的类。原创 2025-05-18 22:57:58 · 594 阅读 · 0 评论 -
类的定义和方法
calculate_perimeter():计算周长(公式:2×(长+宽))。is_square() 方法,判断是否为正方形(长 == 宽)。calculate_circumference():计算圆的周长(公式:2πr)。shape_type="rectangle":创建长方形(参数:长、宽)。calculate_area():计算圆的面积(公式:πr²)。shape_type="circle":创建圆(参数:半径)。calculate_area():计算面积(公式:长×宽)。原创 2025-05-17 21:56:31 · 294 阅读 · 0 评论 -
函数专题2 装饰器
装饰器函数返回的是wrapper函数,所以,在调用装饰器函数的时候,返回的还是wrapper函数,而不是被修饰的函数。可以看到,上述这个写法的时候,prime_nums()没有传入参数,如果函数有参数,那么必须给外部函数传入参数,也就是需要给外部的装饰器函数传入参数。会发现,这个time模块让整个代码逻辑很混乱,因为函数的主体是找质数,time模块是找质数的时间,如果可以time模块放在函数外,这样逻辑才清晰。装饰器的本质是一个高阶函数,它接收一个函数作为参数,并返回一个新函数来替代原函数。原创 2025-05-16 23:17:43 · 1018 阅读 · 0 评论 -
函数专题1
函数的基本写法如下所示:"""Docstring: 描述函数的功能、参数和返回值 (可选但强烈推荐)"""# 函数体: 实现功能的代码# ...return value # 可选,用于返回结果def: 关键字,表示开始定义一个函数。function_name: 函数的名称,应遵循Python的命名约定(通常是小写字母和下划线,例如 calculate_area,用英文单词含义和下划线来作为函数名)。原创 2025-05-15 21:26:48 · 1061 阅读 · 0 评论 -
异常处理机制
Python的异常处理机制为程序提供了强大的容错能力 (fault tolerance)。当程序在运行时遇到意外情况(即异常),它不会直接崩溃,而是可以被设计成优雅地处理这些错误,并可能继续执行后续逻辑(如果设计允许)或以可控的方式结束。当异常发生时,Python会创建一个异常对象 (exception object)(通常是 Exception 类的子类实例)。如果这段可能出错的代码位于 try 语句块中,程序流程会寻找并跳转到匹配的 except 语句块(如果存在)来处理这个异常。原创 2025-05-14 18:03:56 · 1196 阅读 · 0 评论 -
元组和OS模块
很多流行的 ML/DL 库(如 TensorFlow, PyTorch, NumPy)在其 API 中都广泛使用了元组来表示形状、配置等。可以看到,元组最重要的功能是在列表之上,增加了不可修改这个需求。原创 2025-05-13 20:25:18 · 923 阅读 · 0 评论 -
机器学习管道 pipeline
知识回顾:转化器和估计器的概念管道工程ColumnTransformer和Pipeline类作业:整理下全部逻辑的先后顺序,看看能不能制作出适合所有机器学习的通用pipeline。原创 2025-05-12 18:03:05 · 1163 阅读 · 0 评论 -
kaggle泰坦尼克号人员生还预测
自行学习参考如何使用kaggle平台,写下使用注意点,并对下述比赛提交代码。原创 2025-05-11 19:00:27 · 252 阅读 · 0 评论 -
常见的降维算法
自由作业:探索下什么时候用到降维?降维的主要应用?或者让ai给你出题,群里的同学互相学习下。可以考虑对比下在某些特定数据集上t-sne的可视化和pca可视化的区别。原创 2025-05-10 19:57:38 · 1133 阅读 · 0 评论 -
SVD奇异值分解
对于任何矩阵(如结构化数据可以变为:样本*特征的矩阵,图像数据天然就是矩阵),均可做等价的奇异值SVD分解,对于分解后的矩阵,可以选取保留前K个奇异值及其对应的奇异向量,重构原始矩阵,可以通过计算Frobenius 范数相对误差来衡量原始矩阵和重构矩阵的差异。应用:结构化数据中,将原来的m个特征降维成k个新的特征,新特征是原始特征的线性组合,捕捉了数据的主要方差信息,降维后的数据可以直接用于机器学习模型(如分类、回归),通常能提高计算效率并减少过拟合风险。降噪:通常噪声对应较小的奇异值。原创 2025-05-09 21:06:09 · 673 阅读 · 0 评论 -
特征降维!
常见的特征筛选算法方差筛选皮尔逊相关系数筛选lasso筛选树模型重要性shap重要性递归特征消除REF作业:对心脏病数据集完成特征筛选,对比精度今天这节先说一下特征筛选。原创 2025-05-08 21:06:51 · 1767 阅读 · 0 评论 -
聚类后的分析:推断簇的类型
特征Cluster 0Cluster 1Cluster 2性别几乎全为男性多为男性几乎全为女性年龄40–55岁55–65岁55–70岁最大心率160–180(较高)100–140(较低)140–170(中等)ST斜率大多为下降(2)多为水平(1)1和2均有@浙大疏锦行。原创 2025-05-07 21:55:12 · 1877 阅读 · 0 评论 -
聚类!!!
知识点聚类的指标聚类常见算法:kmeans聚类、dbscan聚类、层次聚类三种算法对应的流程。原创 2025-05-06 21:49:48 · 950 阅读 · 0 评论 -
数组的创建 NumPy 数组基础笔记
NumPy 数组的或称为的概念,与我们日常理解的维度非常相似。原创 2025-05-05 22:11:53 · 974 阅读 · 0 评论 -
复习!!!
尝试找到一个kaggle或者其他地方的结构化数据集,用之前的内容完成一个全新的项目,这样你也是独立完成了一个专属于自己的项目。原创 2025-05-04 22:49:45 · 203 阅读 · 0 评论 -
经典机器学习中的SHAP可解释分析
理解复杂机器学习模型(尤其是“黑箱”模型,如随机森林、梯度提升树、神经网络等)为什么会对特定输入做出特定预测。SHAP 提供了一种统一的方法来解释模型的输出。核心思想:合作博弈论中的 Shapley 值SHAP (SHapley Additive exPlanations) 的核心基于博弈论中的Shapley 值概念。模型的特征 (Features)就是玩家。目标是预测某个样本的输出值。不同的特征子集可以“合作”起来进行预测。某个特征子集进行预测得到的值。如何公平地。原创 2025-05-03 22:57:30 · 882 阅读 · 0 评论 -
不平衡数据集的处理
特性修改类别权重 (修改分类阈值作用阶段模型训练时模型预测(或评估)时作用对象模型的损失函数参数学习过程模型输出概率/分数到最终预测的决策规则对模型影响改变学习到的模型本身和决策边界不改变已学习到的模型性质根本性调整,代价敏感学习后处理性质的调整目标侧重学习一个内在区分能力更强的模型在现有模型上调整性能指标的权衡实现方式设置算法的参数(如在预测后应用不同的概率门槛。原创 2025-05-02 23:30:16 · 714 阅读 · 0 评论