- 博客(43)
- 收藏
- 关注
原创 DAY 44 预训练模型
模型年份提出团队关键创新点层数参数量ImageNet Top-5 错误率典型应用场景预训练权重可用性LeNet-51998Yann LeCun 等首个 CNN 架构,卷积层 + 池化层 + 全连接层,Sigmoid 激活函数7~60KN/A手写数字识别(MNIST)无(历史模型)AlexNet2012Alex Krizhevsky 等ReLU 激活函数、Dropout、数据增强、GPU 训练860M15.3%大规模图像分类。
2025-08-15 20:41:06
575
原创 DAY 42 Grad-CAM与Hook函数
一、前置知识知识点回顾:回调函数lambda函数hook函数的模块钩子和张量钩子Grad-CAM的示例在深度学习中,我们经常需要查看或修改模型中间层的输出或梯度。然而,标准的前向传播和反向传播过程通常是一个黑盒,我们很难直接访问中间层的信息。PyTorch 提供了一种强大的工具——,它允许我们在不修改模型结构的情况下,获取或修改中间层的信息。它的核心价值在于让开发者能够动态监听、捕获甚至修改模型内部任意层的输入 / 输出或梯度,而无需修改模型的原始代码结构。
2025-08-13 23:12:38
810
原创 DAY 41 简单CNN
知识回顾:数据增强卷积神经网络定义的写法:调整一个批次的分布,常用与图像数据:只有输出的才叫特征图:直接修改在图像数据预处理环节,为提升数据多样性,可采用数据增强(数据增广)策略。该策略通常,而是通过对现有图像进行多样化变换,使每次训练输入的样本呈现更丰富的形态差异,从而有效扩展模型训练的样本空间多样性。常见的修改策略包括以下几类:如旋转、缩放、平移、剪裁、裁剪、翻转:如修改颜色、亮度、对比度、饱和度、色相、高斯模糊(模拟对焦失败)、增加噪声、马赛克。
2025-08-11 21:55:08
885
原创 DAY 40 训练和测试的规范写法
批量维度不变性:无论进行flatten、view还是reshape操作,第一个维度batch_size通常保持不变。动态维度指定:使用-1让PyTorch自动计算该维度的大小,但需确保其他维度的指定合理,避免形状不匹配错误。
2025-08-10 20:00:34
689
原创 DAY 39 图像数据与显存
先归一化,再标准化transforms.ToTensor(), # 转换为张量并归一化到[0,1]transforms.Normalize((0.1307,), (0.3081,)) # MNIST数据集的均值和标准差,这个值很出名,所以直接使用])# 2. 加载MNIST数据集,如果没有会自动下载# 定义两层MLP神经网络self.flatten = nn.Flatten() # 将28x28的图像展平为784维向量。
2025-08-09 23:49:01
1036
2
原创 DAY 38 Dataset和Dataloader类
核心结论:定义数据的内容和格式(即“如何获取单个样本”),包括:数据存储路径/来源(如文件路径、数据库查询)。原始数据的读取方式(如图像解码为PIL对象、文本读取为字符串)。样本的预处理逻辑(如裁剪、翻转、归一化等,通常通过transform参数实现)。返回值格式(如(image_tensor, label))。定义数据的加载方式和批量处理逻辑(即“如何高效批量获取数据”),包括:批量大小(batch_size)。是否打乱数据顺序(shuffle)。@浙大疏锦行。
2025-08-08 23:50:38
897
原创 DAY 37 早停策略和模型权重的保存
知识点回顾:过拟合的判断:测试集和训练集同步打印指标模型的保存和加载仅保存权重保存权重和模型保存全部信息checkpoint,还包含训练状态早停策略复习之前的代码训练集的loss在下降,但是有可能出现:模型过度学习了训练集的信息,导致在测试集上表现不理想。所以很自然的,我们想,以。一、过拟合的判断实际上,和,是一个逻辑,但是打印loss可以体现在一个图中。二、模型的保存和加载。
2025-08-07 23:25:10
669
原创 DAY 35 模型可视化与推理
知识点回顾:三种不同的模型可视化方法:推荐torchinfo打印summary+权重分布可视化进度条功能:手动和自动写法,让打印结果更加美观推理的写法:评估模式。
2025-08-05 23:57:22
591
原创 DAY 34 GPU训练及类的call方法
知识点回归:CPU性能的查看:看架构代际、核心数、线程数GPU性能的查看:看显存、看级别、看架构代际GPU训练的方法:数据和模型移动到GPU device上类的call方法:为什么定义前向传播时可以直接写作self.fc1(x)
2025-08-04 22:44:27
582
原创 DAY 33 MLP神经网络的训练
定义一个简单的全连接神经网络模型,包含一个输入层、一个隐藏层和一个输出层。定义层数定义前向传播顺序class MLP(nn.Module): # 定义一个多层感知机(MLP)模型,继承父类nn.Moduledef __init__(self): # 初始化函数super(MLP, self).__init__() # 调用父类的初始化函数# 前三行是八股文,后面的是自定义的self.fc1 = nn.Linear(4, 10) # 输入层到隐藏层。
2025-08-03 22:56:24
702
原创 DAY 32 官方文档的阅读
知识点回顾:官方文档的检索方式:github和官网官方文档的阅读和使用:要求安装的包和文档为同一个版本类的关注点:实例化所需要的参数普通方法所需要的参数普通方法的返回值绘图的理解:对底层库的调用我们已经掌握了相当多的机器学习和python基础知识,现在面对一个全新的官方库,看看是否可以借助官方文档的写法了解其如何使用。我们以这个来介绍如何使用官方文档。大多数 Python 库都会有官方文档,里面包含了以及。一般通过github仓库都可以找到对应的官方文档,在官方文档中搜索。
2025-08-02 20:14:43
453
原创 DAY 31 文件的规范拆分和写法
知识点回顾:规范的文件命名规范的文件夹管理机器学习项目的拆分编码格式和类型注解昨天我们已经介绍了如何在不同的文件中,导入其他目录的文件,核心在于了解导入方式和python解释器检索目录的方式。搞清楚了这些,那我们就可以来看看,如何把一个文件,拆分成多个具有着独立功能的文件,然后通过import的方式,来调用这些文件。
2025-08-01 18:18:07
598
原创 DAY 30 模块和库的导入
模块(Module)以 .py 结尾的单个文件,包含Python代码(函数、类、变量等)。将代码拆分到不同文件中,避免代码冗余,方便复用和维护。包(Package)在python里,包就是库有层次的文件目录结构(即文件夹),用于组织多个模块和子包。包的根目录下必须包含一个 __init__.py 文件(可以为空),用于标识该目录是一个包。
2025-07-31 22:17:38
842
原创 DAY 29 复习日:类的装饰器
是动态修改类 / 函数,而不改变原代码。通过外部赋值,可以在不修改类定义的前提下,为类添加新方法或修改已有方法。——理解动态的含义。
2025-07-30 20:47:30
413
原创 DAY 28 类的定义和方法
其中,self.xx是用来表明这个属性“归属于”这个类自己的(self)。比如self.name,就代表着:“自己的名字”,self等于“自己”,这个self指向类的实例化地址,传入的self.xx是它的属性。所以,当你需要一个语法上存在的代码块,但又暂时不想在其中放入任何实际的逻辑时,pass 就是一个完美的占位符,它告诉解释器:“这里有一个代码块,但它什么也不做。以后要是用它的属性值,即使是从外界参数传入的,前面也必须加上self.xx,否则传入的参数没价值(例外的情况我们不提)
2025-07-28 21:33:15
651
原创 DAY 27 函数专题2:装饰器
装饰器函数知识点回顾:装饰器的思想:进一步复用函数的装饰器写法注意内部函数的返回值本质上是一个 Python 函数,它可以让其他函数或方法在不需要做任何代码修改的前提下增加额外功能。如果让一个函数具备太多功能,那么他看起来就会比较乱,可读性比较差,如果把其中一部分相同甚至可以复用的功能用一个新的函数来调用,然后让2个函数同时实现,就会做到所以装饰器本身就是函数中调用其他函数,实现先拆分函数,再合并函数的功能。装饰器函数如果原函数有参数,装饰器需要在wrapper中接收并传递这些参数(用。
2025-07-27 22:34:08
525
原创 DAY 26 函数专题1:函数定义与参数
本文介绍了Python函数的基础知识,包括函数的定义格式、参数类型和变量作用域。主要内容有:1. 函数定义语法及文档字符串的规范写法;2. 参数类型:位置参数、默认参数、可变参数(*args和**kwargs);3. 变量作用域:局部变量和全局变量的区别;4. 提供了5个实践题目,涉及计算圆/矩形面积、平均值计算、用户信息打印和图形描述等场景,帮助掌握函数参数的不同用法。文章强调参数传递时推荐使用关键字参数以提高可读性,并指出带默认值的参数应放在参数列表末尾的注意事项。
2025-07-26 20:40:55
904
原创 DAY 25 异常处理
如果这段可能出错的代码位于 try 语句块中,程序流程会寻找并跳转到匹配的 except 语句块(如果存在)来处理这个异常。更准确的理解: else 子句中的代码是你希望在 try 块中的代码成功完成且没有引发任何异常之后才执行的代码。在ML/DL项目中,由于流程长、资源消耗大、外部依赖多,finally 提供的这种“保证执行”的机制对于构建稳定、可靠的系统至关重要。finally这个无论如何都会执行的特性,在机器学习和深度学习的中,多涉及资源的保存、文件的关闭等。Debug过程中的各类报错。
2025-07-25 18:46:36
719
原创 DAY 24 元组和OS模块
知识点回顾:元组可迭代对象os模块元组1. 元组的定义和特点元组是python中一个,用于存储一系列的元素。元组中的元素可以是任何类型,包括数据、字符串、列表等,且元组之间用,整个元组用包围。
2025-07-24 21:26:41
1002
原创 DAY 23 Pipeline 管道
--- 定义不同列的类型和它们对应的预处理步骤 ---# 这些定义是基于原始数据 X 的列类型来确定的# 识别原始的 object 列 (对应你原代码中的 discrete_features 在预处理前)# 识别原始的非 object 列 (通常是数值列)# 有序分类特征 (对应你之前的标签编码)# 注意:OrdinalEncoder默认编码为0, 1, 2... 对应你之前的1, 2, 3...需要在模型解释时注意# 这里的类别顺序需要和你之前映射的顺序一致。
2025-07-23 22:11:32
740
原创 DAY 21 常见的降维算法
t-SNE 是一种强大的非线性降维技术,主要用于高维数据的可视化。它通过在低维空间中保持高维空间中数据点之间的局部相似性(邻域关系)来工作。与PCA关注全局方差不同,t-SNE 更关注局部细节。理解它的超参数(尤其是困惑度)和结果的正确解读方式非常重要。线性判别分析 (Linear Discriminant Analysis, LDA)
2025-07-21 22:53:23
987
原创 DAY 20 奇异值分解(SVD)
数据降维成功减少了特征维度,降低了数据复杂性。模型在测试集上的准确率处于中等水平,训练集的近似误差也在可接受范围内,但无论是降维效果还是模型性能,都还有进一步优化提升的空间。比如,可以尝试调整降维时保留的特征数量k,或者对模型进行调参、更换更合适的模型等操作,来提高准确率并降低误差。@浙大疏锦行。
2025-07-20 23:18:51
1209
原创 DAY 19 常见的特征筛选算法
过去电脑性能比较差,特征数目太多计算起来很慢。同时特征中可能存在很多冗余特征干扰解释性、存在噪声特征干扰精度。所以在面对高维特征的时候常常需要引入特征降维,之前课程中项目的特征也就小几十个,不太需要做降维,对于某些特征较多的数据,如基因数据、微生物数据、传感器数据等,特征较多,所以会考虑特征降维。筛选,比如方差筛选,剔除方差过小的特征;利用皮尔逊相关系数筛选;lasso筛选(lasso自带的系数可以理解为重要性)、利用树模型自带的重要性、shap重要性等筛选;特征递归方法。组合,如pca等。
2025-07-19 19:07:47
779
原创 DAY 17 常见聚类算法
轮廓系数:从每个样本的 “感受” 出发,越接近 1 越好。CH 指数:看整体 “类内紧、类间远”,分数越高越好。DB 指数:看类与类是否太像,分数越低越好。聚类常见算法KMeans 聚类KMeans 是一种基于距离的聚类算法,需要预先指定聚类个数,即 `k`。其核心步骤如下:1. 随机选择 `k` 个样本点作为初始质心(簇中心)。2. 计算每个样本点到各个质心的距离,将样本点分配到距离最近的质心所在的簇。3. 更新每个簇的质心为该簇内所有样本点的均值。
2025-07-17 20:11:34
811
原创 DAY 16 数组的常见操作和形状
知识点:numpy数组的创建:简单创建、随机创建、遍历、运算numpy数组的索引:一维、二维、三维SHAP值的深入理解数组的创建NumPy 数组基础笔记NumPy 数组的维度 (Dimension)或称为轴 (Axis)的概念,与我们日常理解的维度非常相似。
2025-07-16 22:22:44
409
原创 DAY 14 经典机器学习中的SHAP可解释分析
SHAP 通过计算每个特征对单个预测(相对于平均预测)的边际贡献(Shapley 值),提供了一种将模型预测分解到每个特征上的方法。这种分解对于每个样本和每个特征(以及分类问题中的每个类别)都需要进行,因此生成了我们看到的。分类问题和回归问题输出的shap_values的形状不同。根据上述原理,SHAP 需要为每个样本的每个特征计算一个。将是未来学习神经网络最重要的东西之一。
2025-07-14 22:54:31
983
原创 DAY 13 不平衡数据的处理
知识点:不平衡数据集的处理策略:过采样、修改权重、修改阈值交叉验证代码过采样随机过采样ROS随机过采样是从少数类中随机选择样本,并将其复制后添加到训练集。随机过采样的优点是,它可以,从而模型的。随机过采样的缺点是,它可能会,从而。此外,它可能会,并且可能会增加模型的偏差。smote过采样smote过采样是合成样本的方法。SMOTE的是通过进行来修改权重。
2025-07-13 22:40:10
1028
原创 DAY 12 启发式算法
启发式算法是解决复杂问题的一把 “瑞士军刀”,它不追求完美,但强调实用。当面对 “找不到最优解” 或 “找最优解成本太高” 的问题时,启发式算法是你的最佳选择。模拟退火可以把机器学习中的 “退火算法” 理解成一个 “聪明试错” 的过程,就像我们找东西时,从一开始大范围摸索,慢慢聚焦到精准位置,既不会错过可能的好地方,又能高效找到目标。用生活化的例子理解核心思路想象你在一座大雾笼罩的山上,想找到最低的山谷一开始你可能站在某个坡上,脚下有点陡(比如向左走会变高,向右走会变低)。
2025-07-12 13:00:00
1532
原创 DAY 11 常见的调参方式
核心优势: 它不是随机选择下一个点,而是根据先前评估的结果建立一个概率模型(通常是高斯过程),预测哪些参数组合可能产生更好的结果,并据此选择下一个评估点。这使得它在寻找最优解方面通常比随机搜索更高效(用更少的迭代次数达到相似或更好的性能),特别是当模型训练(单次评估)非常耗时的时候。实际上,有着非常多的方式可以实现贝叶斯优化,上面的代码比较简洁美观,贝叶斯优化和网格搜索的代码书写风格高度一致。- 需要定义参数的搜索空间,与随机搜索类似,当搜索空间非常大时,它通常比网格搜索和随机搜索更有效。
2025-07-11 18:06:50
511
原创 DAY 10 机器学习建模与评估
知识点:数据集的划分机器学习模型建模的三行代码机器学习模型分类问题的评估数据集的划分首先进行数据划分,记住之前课上的划分方法:只要调参就要考2次这里我们先不调参,所以只需要划分一次即可机器学习模型建模的三行代码1. 模型实例化2. 模型训练(代入训练集)3. 模型预测 (代入测试集)评估方式测试集的预测值和测试集的真实值进行对比,得到混淆矩阵基于混淆矩阵,计算准确率、召回率、F1值,这些都是固定阈值的评估指标。
2025-07-10 20:47:31
542
原创 DAY 9 热力图和子图的绘制
是 Python 内置函数,用于将可迭代对象(如列表、元组、字符串)组合为索引序列,同时返回元素和其对应索引。这在需要同时访问元素和索引的循环中特别有用。尝试对着心脏病数据集绘制热力图和单特征分布的大图(包含几个子图)知识点:热力图和子图的绘制。enumerate()函数。介绍了热力图的绘制方法。介绍了子图的绘制方法。
2025-07-09 16:47:51
570
原创 DAY 8 标签编码与连续变量处理
字典字典是 Python 中一种非常常用的数据结构,它是一种可变容器模型,可以存储任意类型的对象。字典中的每个元素都是一个键值对标签编码离散特征(不存在顺序):采用独热编码,函数为pd.get_dummies()离散特征(存在顺序和大小关系):采用标签编码,借助dataframe的map函数特征是二分类时,直接映射为0和1,三分类以上才涉及独热编码实际上借助一个映射函数也可以实现上面2次编码,字典的键值对可以嵌套字典连续特征的处理:归一化和标准化归一化。
2025-07-08 21:34:35
401
原创 DAY 6 描述性统计
1. 单特征可视化:连续变量箱线图(以及核密度直方图)、离散特征直方图。但是实际上连续变量也可以绘制类似于直方图的图像,可以用。2. 特征和标签关系可视化。内容回顾:数据初步可视化。估计来完成边缘的柔和化。标签和特征均为离散的。
2025-07-06 21:13:53
309
原创 DAY 5 独热编码
现在在py文件中 一次性处理data数据中所有的连续变量和离散变量。3. 对独热编码后的变量转化为int类型。先按照示例代码过一遍,然后完成下列题目。2. 对离散变量进行one-hot编码。4. 对所有缺失值进行填充。题目:离散特征的独热编码。1. 读取data数据。
2025-07-05 17:02:40
158
原创 DAY 4 缺失值的处理
完成后在py文件中独立完成一遍,并且利用debugger工具来查看属性(不借助函数显式查看)----养成利用debugger工具的习惯。按照示例代码的要求,去尝试补全信贷数据集中的数值型缺失值。1. 打开数据(csv文件、excel文件)2. 查看数据(尺寸信息、查看列名等方法)题目:初识pandas库与缺失数据的补全。打开数据(csv文件、excel文件)查看数据(尺寸信息、查看列名等方法)5. 利用循环补全所有列的空值。4. 众数、中位数填补空值。利用循环补全所有列的空值。众数、中位数填补空值。
2025-07-04 21:53:30
208
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人