- 博客(54)
- 收藏
- 关注
原创 DAY 55 序列预测任务介绍
我们之前接触到的结构化数据,它本身不具备顺序,我们认为每个样本之间独立无关,样本之间即使调换顺序,仍然不影响模型的训练。但是日常中很多数据是存在先后关系的,而他们对应的任务是预测下一步的值,我们把这个任务称之为序列预测。举个例子,比如有过去30天的股票价格,我们希望预测第31天的价格。比如之前的单车预测,有前60天的单车需求数据,希望预测后面20天的销量。或者文本,人的语言是有顺序的,预测下一个单词是这也是序列预测任务。
2025-08-27 22:25:38
839
原创 DAY 54 Inception网络及其思考
今天我们介绍Inception,也就是GoogleNetInception 网络,也被称为 GoogLeNet,是 Google 团队在 2014 年提出的经典卷积神经网络架构。它的核心设计理念是 “并行的多尺度融合”,通过在同一层网络中使用多个不同大小的卷积核(如 1x1、3x3、5x5)以及池化操作,从不同尺度提取图像特征,然后将这些特征进行融合,从而在不增加过多计算量的情况下,获得更丰富的特征表达。Inception 模块是 Inception 网络的基本组成单元。
2025-08-26 14:47:14
782
原创 DAY 53 对抗生成网络
知识点回顾:对抗生成网络的思想:关注损失从何而来生成器、判别器nn.sequential容器:适合于按顺序运算的情况,简化前向传播写法leakyReLU介绍:避免relu的神经元失活现象。
2025-08-25 19:10:53
865
原创 DAY 52 神经网络调参指南
正则化中,如果train的loss可以很低,但是val的loss还是很高,则说明泛化能力不强,优先让模型过拟合,在考虑加大正则化提高泛化能力,可以分模块来droupout,可以确定具体是那部分参数导致过拟合,这里还有个小trick是引入残差链接后再利用droupout。预训练参数是最好的参数初始化方法,在训练前先找找类似的论文有无预训练参数,其次是Xavir,尤其是小数据集的场景,多找论文找到预训练模型是最好的做法。关于预训练参数,我们介绍过了,优先动深层的参数,因为浅层是通用的;
2025-08-24 17:29:35
924
原创 DAY 50 预训练模型+CBAM模块
知识点回顾:ResNet结构解析CBAM放置位置的思考针对预训练模型的训练策略差异化学习率三阶段微调现在我们思考下,是否可以对于预训练模型增加模块来优化其效果,这里我们会遇到一个问题预训练模型的结构和权重是固定的,如果修改其中的模型结构,是否会大幅影响其性能。其次是训练的时候如何训练才可以更好的避免破坏原有的特征提取器的参数。可以很明显的想到,如果是ResNet-18+CBAM模块,那么大多数地方的代码都是可以复用的,模型定义部分需要重写。先继续之前的代码。
2025-08-22 17:52:58
1037
原创 DAY 49 CBAM注意力
CBAM是一种能够集成到任何卷积神经网络架构中的注意力模块。通过学习的方式,自动获取特征图在通道和空间维度上的重要性,进而对特征图进行自适应调整,增强重要特征,抑制不重要特征,提升模型的特征表达能力和性能。简单来说,它就像是给模型装上了 “智能眼镜”,让模型能够更精准地看到图像中关键的部分通道注意力模块(Channel Attention Module)和空间注意力模块(Spatial Attention Module)。这两个模块顺序连接,共同作用于输入的特征图。
2025-08-21 13:36:32
834
原创 DAY 48 随机函数与广播机制
知识点回顾:随机张量的生成:torch.randn函数卷积和池化的计算公式(可以不掌握,会自动计算的)pytorch的广播机制:加法和乘法的广播机制ps:numpy运算也有类似的广播机制,基本一致。
2025-08-20 17:52:20
692
原创 DAY 47 注意力热图可视化
===================== 新增:通道注意力模块(SE模块) ====================="""通道注意力模块(Squeeze-and-Excitation)""""""参数:in_channels: 输入特征图的通道数reduction_ratio: 降维比例,用于减少参数量"""# 全局平均池化 - 将空间维度压缩为1x1,保留通道信息# 全连接层 + 激活函数,用于学习通道间的依赖关系# 降维:压缩通道数,减少计算量# 升维:恢复原始通道数。
2025-08-18 17:24:35
804
原创 DAY 46 通道注意力(SE注意力)
注意力机制是一种让模型学会「选择性关注重要信息」的特征提取器,就像人类视觉会自动忽略背景,聚焦于图片中的主体(如猫、汽车)。不同CNN层的特征图:不同通道的特征图什么是注意力:注意力家族,类似于动物园,都是不同的模块,好不好试了才知道。transformer中的叫做自注意力机制,他是一种自己学习自己的机制,他可以自动学习到图片中的主体,并忽略背景。我们现在说的很多模块,比如通道注意力、空间注意力、通道注意力等等,都是基于自注意力机制的。
2025-08-17 23:15:17
1009
原创 DAY 45 Tensorboard使用介绍
知识点回顾:tensorboard的发展历史和原理tensorboard的常见操作tensorboard在cifar上的实战:MLP和CNN模型之前的内容中,我们在神经网络训练中,为了帮助自己理解,借用了很多的组件,比如训练进度条、可视化的loss下降曲线、权重分布图,运行结束后还可以查看单张图的推理效果。如果现在有一个交互工具可以很简单的通过按钮完成这些辅助功能那就好了。
2025-08-16 19:31:13
653
原创 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
998
原创 DAY 42 Grad-CAM与Hook函数
一、前置知识知识点回顾:回调函数lambda函数hook函数的模块钩子和张量钩子Grad-CAM的示例在深度学习中,我们经常需要查看或修改模型中间层的输出或梯度。然而,标准的前向传播和反向传播过程通常是一个黑盒,我们很难直接访问中间层的信息。PyTorch 提供了一种强大的工具——,它允许我们在不修改模型结构的情况下,获取或修改中间层的信息。它的核心价值在于让开发者能够动态监听、捕获甚至修改模型内部任意层的输入 / 输出或梯度,而无需修改模型的原始代码结构。
2025-08-13 23:12:38
1056
原创 DAY 41 简单CNN
知识回顾:数据增强卷积神经网络定义的写法:调整一个批次的分布,常用与图像数据:只有输出的才叫特征图:直接修改在图像数据预处理环节,为提升数据多样性,可采用数据增强(数据增广)策略。该策略通常,而是通过对现有图像进行多样化变换,使每次训练输入的样本呈现更丰富的形态差异,从而有效扩展模型训练的样本空间多样性。常见的修改策略包括以下几类:如旋转、缩放、平移、剪裁、裁剪、翻转:如修改颜色、亮度、对比度、饱和度、色相、高斯模糊(模拟对焦失败)、增加噪声、马赛克。
2025-08-11 21:55:08
920
原创 DAY 40 训练和测试的规范写法
批量维度不变性:无论进行flatten、view还是reshape操作,第一个维度batch_size通常保持不变。动态维度指定:使用-1让PyTorch自动计算该维度的大小,但需确保其他维度的指定合理,避免形状不匹配错误。
2025-08-10 20:00:34
739
原创 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
1109
2
原创 DAY 38 Dataset和Dataloader类
核心结论:定义数据的内容和格式(即“如何获取单个样本”),包括:数据存储路径/来源(如文件路径、数据库查询)。原始数据的读取方式(如图像解码为PIL对象、文本读取为字符串)。样本的预处理逻辑(如裁剪、翻转、归一化等,通常通过transform参数实现)。返回值格式(如(image_tensor, label))。定义数据的加载方式和批量处理逻辑(即“如何高效批量获取数据”),包括:批量大小(batch_size)。是否打乱数据顺序(shuffle)。@浙大疏锦行。
2025-08-08 23:50:38
947
原创 DAY 37 早停策略和模型权重的保存
知识点回顾:过拟合的判断:测试集和训练集同步打印指标模型的保存和加载仅保存权重保存权重和模型保存全部信息checkpoint,还包含训练状态早停策略复习之前的代码训练集的loss在下降,但是有可能出现:模型过度学习了训练集的信息,导致在测试集上表现不理想。所以很自然的,我们想,以。一、过拟合的判断实际上,和,是一个逻辑,但是打印loss可以体现在一个图中。二、模型的保存和加载。
2025-08-07 23:25:10
695
原创 DAY 35 模型可视化与推理
知识点回顾:三种不同的模型可视化方法:推荐torchinfo打印summary+权重分布可视化进度条功能:手动和自动写法,让打印结果更加美观推理的写法:评估模式。
2025-08-05 23:57:22
682
原创 DAY 34 GPU训练及类的call方法
知识点回归:CPU性能的查看:看架构代际、核心数、线程数GPU性能的查看:看显存、看级别、看架构代际GPU训练的方法:数据和模型移动到GPU device上类的call方法:为什么定义前向传播时可以直接写作self.fc1(x)
2025-08-04 22:44:27
617
原创 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
728
原创 DAY 32 官方文档的阅读
知识点回顾:官方文档的检索方式:github和官网官方文档的阅读和使用:要求安装的包和文档为同一个版本类的关注点:实例化所需要的参数普通方法所需要的参数普通方法的返回值绘图的理解:对底层库的调用我们已经掌握了相当多的机器学习和python基础知识,现在面对一个全新的官方库,看看是否可以借助官方文档的写法了解其如何使用。我们以这个来介绍如何使用官方文档。大多数 Python 库都会有官方文档,里面包含了以及。一般通过github仓库都可以找到对应的官方文档,在官方文档中搜索。
2025-08-02 20:14:43
486
原创 DAY 31 文件的规范拆分和写法
知识点回顾:规范的文件命名规范的文件夹管理机器学习项目的拆分编码格式和类型注解昨天我们已经介绍了如何在不同的文件中,导入其他目录的文件,核心在于了解导入方式和python解释器检索目录的方式。搞清楚了这些,那我们就可以来看看,如何把一个文件,拆分成多个具有着独立功能的文件,然后通过import的方式,来调用这些文件。
2025-08-01 18:18:07
652
原创 DAY 30 模块和库的导入
模块(Module)以 .py 结尾的单个文件,包含Python代码(函数、类、变量等)。将代码拆分到不同文件中,避免代码冗余,方便复用和维护。包(Package)在python里,包就是库有层次的文件目录结构(即文件夹),用于组织多个模块和子包。包的根目录下必须包含一个 __init__.py 文件(可以为空),用于标识该目录是一个包。
2025-07-31 22:17:38
863
原创 DAY 29 复习日:类的装饰器
是动态修改类 / 函数,而不改变原代码。通过外部赋值,可以在不修改类定义的前提下,为类添加新方法或修改已有方法。——理解动态的含义。
2025-07-30 20:47:30
440
原创 DAY 28 类的定义和方法
其中,self.xx是用来表明这个属性“归属于”这个类自己的(self)。比如self.name,就代表着:“自己的名字”,self等于“自己”,这个self指向类的实例化地址,传入的self.xx是它的属性。所以,当你需要一个语法上存在的代码块,但又暂时不想在其中放入任何实际的逻辑时,pass 就是一个完美的占位符,它告诉解释器:“这里有一个代码块,但它什么也不做。以后要是用它的属性值,即使是从外界参数传入的,前面也必须加上self.xx,否则传入的参数没价值(例外的情况我们不提)
2025-07-28 21:33:15
671
原创 DAY 27 函数专题2:装饰器
装饰器函数知识点回顾:装饰器的思想:进一步复用函数的装饰器写法注意内部函数的返回值本质上是一个 Python 函数,它可以让其他函数或方法在不需要做任何代码修改的前提下增加额外功能。如果让一个函数具备太多功能,那么他看起来就会比较乱,可读性比较差,如果把其中一部分相同甚至可以复用的功能用一个新的函数来调用,然后让2个函数同时实现,就会做到所以装饰器本身就是函数中调用其他函数,实现先拆分函数,再合并函数的功能。装饰器函数如果原函数有参数,装饰器需要在wrapper中接收并传递这些参数(用。
2025-07-27 22:34:08
577
原创 DAY 26 函数专题1:函数定义与参数
本文介绍了Python函数的基础知识,包括函数的定义格式、参数类型和变量作用域。主要内容有:1. 函数定义语法及文档字符串的规范写法;2. 参数类型:位置参数、默认参数、可变参数(*args和**kwargs);3. 变量作用域:局部变量和全局变量的区别;4. 提供了5个实践题目,涉及计算圆/矩形面积、平均值计算、用户信息打印和图形描述等场景,帮助掌握函数参数的不同用法。文章强调参数传递时推荐使用关键字参数以提高可读性,并指出带默认值的参数应放在参数列表末尾的注意事项。
2025-07-26 20:40:55
965
原创 DAY 25 异常处理
如果这段可能出错的代码位于 try 语句块中,程序流程会寻找并跳转到匹配的 except 语句块(如果存在)来处理这个异常。更准确的理解: else 子句中的代码是你希望在 try 块中的代码成功完成且没有引发任何异常之后才执行的代码。在ML/DL项目中,由于流程长、资源消耗大、外部依赖多,finally 提供的这种“保证执行”的机制对于构建稳定、可靠的系统至关重要。finally这个无论如何都会执行的特性,在机器学习和深度学习的中,多涉及资源的保存、文件的关闭等。Debug过程中的各类报错。
2025-07-25 18:46:36
764
原创 DAY 24 元组和OS模块
知识点回顾:元组可迭代对象os模块元组1. 元组的定义和特点元组是python中一个,用于存储一系列的元素。元组中的元素可以是任何类型,包括数据、字符串、列表等,且元组之间用,整个元组用包围。
2025-07-24 21:26:41
1028
原创 DAY 23 Pipeline 管道
--- 定义不同列的类型和它们对应的预处理步骤 ---# 这些定义是基于原始数据 X 的列类型来确定的# 识别原始的 object 列 (对应你原代码中的 discrete_features 在预处理前)# 识别原始的非 object 列 (通常是数值列)# 有序分类特征 (对应你之前的标签编码)# 注意:OrdinalEncoder默认编码为0, 1, 2... 对应你之前的1, 2, 3...需要在模型解释时注意# 这里的类别顺序需要和你之前映射的顺序一致。
2025-07-23 22:11:32
795
原创 DAY 21 常见的降维算法
t-SNE 是一种强大的非线性降维技术,主要用于高维数据的可视化。它通过在低维空间中保持高维空间中数据点之间的局部相似性(邻域关系)来工作。与PCA关注全局方差不同,t-SNE 更关注局部细节。理解它的超参数(尤其是困惑度)和结果的正确解读方式非常重要。线性判别分析 (Linear Discriminant Analysis, LDA)
2025-07-21 22:53:23
1025
原创 DAY 20 奇异值分解(SVD)
数据降维成功减少了特征维度,降低了数据复杂性。模型在测试集上的准确率处于中等水平,训练集的近似误差也在可接受范围内,但无论是降维效果还是模型性能,都还有进一步优化提升的空间。比如,可以尝试调整降维时保留的特征数量k,或者对模型进行调参、更换更合适的模型等操作,来提高准确率并降低误差。@浙大疏锦行。
2025-07-20 23:18:51
1367
原创 DAY 19 常见的特征筛选算法
过去电脑性能比较差,特征数目太多计算起来很慢。同时特征中可能存在很多冗余特征干扰解释性、存在噪声特征干扰精度。所以在面对高维特征的时候常常需要引入特征降维,之前课程中项目的特征也就小几十个,不太需要做降维,对于某些特征较多的数据,如基因数据、微生物数据、传感器数据等,特征较多,所以会考虑特征降维。筛选,比如方差筛选,剔除方差过小的特征;利用皮尔逊相关系数筛选;lasso筛选(lasso自带的系数可以理解为重要性)、利用树模型自带的重要性、shap重要性等筛选;特征递归方法。组合,如pca等。
2025-07-19 19:07:47
834
原创 DAY 17 常见聚类算法
轮廓系数:从每个样本的 “感受” 出发,越接近 1 越好。CH 指数:看整体 “类内紧、类间远”,分数越高越好。DB 指数:看类与类是否太像,分数越低越好。聚类常见算法KMeans 聚类KMeans 是一种基于距离的聚类算法,需要预先指定聚类个数,即 `k`。其核心步骤如下:1. 随机选择 `k` 个样本点作为初始质心(簇中心)。2. 计算每个样本点到各个质心的距离,将样本点分配到距离最近的质心所在的簇。3. 更新每个簇的质心为该簇内所有样本点的均值。
2025-07-17 20:11:34
902
原创 DAY 16 数组的常见操作和形状
知识点:numpy数组的创建:简单创建、随机创建、遍历、运算numpy数组的索引:一维、二维、三维SHAP值的深入理解数组的创建NumPy 数组基础笔记NumPy 数组的维度 (Dimension)或称为轴 (Axis)的概念,与我们日常理解的维度非常相似。
2025-07-16 22:22:44
443
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅