- 博客(50)
- 收藏
- 关注
原创 python学习DAY49打卡
之前我们介绍了se通道注意力,我们说所有的模块本质上只是对特征进一步提取,今天进一步介绍cbam注意力CBAM 是一种能够集成到任何卷积神经网络架构中的注意力模块。它的核心目标是通过学习的方式,自动获取特征图在通道和空间维度上的重要性,进而对特征图进行自适应调整,增强重要特征,抑制不重要特征,提升模型的特征表达能力和性能。简单来说,它就像是给模型装上了 “智能眼镜”,让模型能够更精准地看到图像中关键的部分。
2025-08-23 22:48:54
638
原创 python学习DAY48打卡
在 PyTorch 中,torch.randn()是一个常用的随机张量生成函数,它可以创建一个由标准正态分布(均值为 0,标准差为 1)随机数填充的张量。PyTorch 的广播机制(Broadcasting)是一种强大的张量运算特性,允许在不同形状的张量之间进行算术运算,而无需显式地扩展张量维度或复制数据。在深度学习中经常需要随机生成一些张量,比如权重的初始化,或者计算输入纬度经过模块后输出的维度,都可以用一个随机函数来实现需要的张量格式,而无需像之前一样必须加载一张真实的图片。
2025-08-22 23:21:03
497
原创 python学习DAY47打卡
这个注意力热图是通过钩子机制: `register_forward_hook` 捕获最后一个卷积层(`conv3`)的输出特征图。热力图(红色表示高关注,蓝色表示低关注)半透明覆盖在原图上。高关注区域(红色):模型认为对分类最重要的区域。昨天代码中注意力热图的部分顺移至今天。作业:对比不同卷积层热图可视化的结果。DAY 47 注意力热图可视化。
2025-08-20 23:12:47
332
原创 python学习DAY46打卡
===================== 新增:通道注意力模块(SE模块) ====================="""通道注意力模块(Squeeze-and-Excitation)""""""参数:in_channels: 输入特征图的通道数reduction_ratio: 降维比例,用于减少参数量"""# 全局平均池化 - 将空间维度压缩为1x1,保留通道信息# 全连接层 + 激活函数,用于学习通道间的依赖关系# 降维:压缩通道数,减少计算量# 升维:恢复原始通道数。
2025-08-19 23:33:37
1940
原创 python学习DAY45打卡
DAY 45 Tensorboard使用介绍作业:对resnet18在cifar10上采用微调策略下,用tensorboard监控训练过程。之前的内容中,我们在神经网络训练中,为了帮助自己理解,借用了很多的组件,比如训练进度条、可视化的loss下降曲线、权重分布图,运行结束后还可以查看单张图的推理效果。如果现在有一个交互工具可以很简单的通过按钮完成这些辅助功能那就好了。
2025-08-18 23:32:39
629
原创 python学习DAY44打卡
上图的层数,代表该模型不同的版本resnet有resnet18、resnet50、resnet152;efficientnet有efficientnet-b0、efficientnet-b1、efficientnet-b2、efficientnet-b3、efficientnet-b4等。
2025-08-17 22:41:41
853
原创 python学习DAY42打卡
这种形式很简约,只需要一行就可以定义一个函数,lambda 的核心价值在于用极简语法快速定义临时函数,避免为一次性使用的简单逻辑单独命名函数,从而减少代码冗余,提升开发效率。Hook 函数是一种回调函数,它可以在不干扰模型正常计算流程的情况下,插入到模型的特定位置,以便获取或修改中间层的输出或梯度。装饰器实现核心是修改原始函数的行为,在其基础上添加额外功能,控制流:被装饰函数 → 原始计算 → 回调函数,适合统一的、可复用的处理逻辑。反向钩子与前向钩子类似,但它是在反向传播过程中被调用的。
2025-08-15 23:18:29
1020
原创 python学习DAY41打卡
就好比你在学新知识,知识体系的基础一直在变,你就得不断重新适应,模型训练也是如此,这就导致训练变得困难,这就是内部协变量偏移问题。该策略通常不改变单次训练的样本总数,而是通过对现有图像进行多样化变换,使每次训练输入的样本呈现更丰富的形态差异,从而有效扩展模型训练的样本空间多样性。可以把全连接层前面的不理解为神经网络的一部分,单纯理解为特征提取器,他们的存在就是帮助模型进行特征提取的。这种学习率调度器的方法相较于之前只有单纯的优化器,是一种超参数的优化方法,它通过调整学习率来优化模型。
2025-08-14 22:38:13
800
原创 python学习DAY40打卡
批量维度不变性:无论进行flatten、view还是reshape操作,第一个维度`batch_size`通常保持不变。动态维度指定:使用`-1`让PyTorch自动计算该维度的大小,但需确保其他维度的指定合理,避免形状不匹配错误。
2025-08-13 23:06:55
957
原创 python学习DAY39打卡
昨天学习了minist这个经典的手写数据集,作为图像数据,相较于结构化数据(表格数据)他的特点在于他每个样本的的形状并不是(特征数,),而是(宽,高,通道数)# 先继续之前的代码from torch.utils.data import DataLoader , Dataset # DataLoader 是 PyTorch 中用于加载数据的工具。
2025-08-12 23:19:34
750
原创 python学习DAY38打卡
数据存储路径/来源(如文件路径、数据库查询)。原始数据的读取方式(如图像解码为PIL对象、文本读取为字符串)。样本的预处理逻辑(如裁剪、翻转、归一化等,通常通过`transform`参数实现)。返回值格式(如`(image_tensor, label)`)。DataLoader类:定义数据的加载方式和批量处理逻辑(即“如何高效批量获取数据”),包括:批量大小(`batch_size`)。是否打乱数据顺序(`shuffle`)。@浙大疏锦行。
2025-08-11 23:12:34
643
原创 python学习DAY37打卡
实际上,在早停策略中,保存 checkpoint(检查点) 是更优选择,因为它不仅保存了模型参数,还记录了训练状态(如优化器参数、轮次、损失值等),一但出现了过拟合,方便后续继续训练。同时每隔固定的训练轮次都会保存模型参数,下次可以接着这里训练,缩小训练的范围。监控的对象是验证集的指标。之前的代码中,训练集的loss在下降,但是有可能出现过拟合现象:模型过度学习了训练集的信息,导致在测试集上表现不理想。实际上,打印测试集的loss和同步打印测试集的评估指标,是一个逻辑,但是打印loss可以体现在一个图中。
2025-08-10 23:27:55
789
原创 python学习DAY35打卡
nn.Linear(4, 10) 只定义了 “输入维度是 4,输出维度是 10”,但不知道输入的批量大小和其他维度,比如卷积层需要知道输入的通道数、高度、宽度等信息。1. Linear-1对应self.fc1 = nn.Linear(4, 10),表明前一层有4个神经元,这一层有10个神经元,每2个神经元之间靠着线相连,所有有4*10个权重参数+10个偏置参数=50个参数。这反映了不同层在模型中的作用不同。这是最基础、最简单的方法,直接打印模型对象,它会输出模型的结构,显示模型中各个层的名称和参数信息。
2025-08-08 22:53:17
994
原创 python学习DAY34打卡
self.fc1是一个实例化的对象,为什么具备了函数一样的用法,这是因为nn.Linear继承了nn.Module类,nn.Module类中定义了__call__方法。可以注意到,self.fc1 = nn.Linear(4, 10) 此时,是实例化了一个nn.Linear(4, 10)对象,并把这个对象赋值给了MLP的初始化函数中的self.fc1变量。综上,数据传输和各种固定开销的总和,超过了 GPU 在这点计算量上通过并行处理所能节省的时间,导致了 GPU 比 CPU 慢的现象。
2025-08-07 08:30:00
676
原创 python学习DAY33打卡
内容:PyTorch和cuda的安装查看显卡信息的命令行命令(cmd中使用)cuda的检查简单神经网络的流程数据预处理(归一化、转换成张量)模型的定义继承nn.Module类定义每一个层定义前向传播流程定义损失函数和优化器定义训练流程可视化loss过程。
2025-08-06 08:15:00
821
原创 python学习DAY32打卡
可以鼠标悬停在这个类上,来查看定义这个类所需要的参数,以及每个参数的格式。ctrl进入可以查看这个类的详细信息。可以看到这个类同样有plot方法。首先加载数据集并训练模型(使用。
2025-08-05 08:15:00
405
原创 python学习DAY31打卡
如何把一个文件,拆分成多个具有着独立功能的文件,然后通过import的方式,来调用这些文件。这样具有几个好处:1. 可以让项目文件变得更加规范和清晰2. 可以让项目文件更加容易维护,修改某一个功能的时候,只需要修改一个文件,而不需要修改多个文件。3. 文件变得更容易复用,部分通用的文件可以单独拿出来,进行其他项目的复用。一个典型的机器学习项目通常包含以下阶段:数据加载:从文件、数据库、API 等获取原始数据。命名参考:`load_data.py` 、`data_loader.py`
2025-08-04 08:40:50
1028
原创 python学习DAY30打卡
模块(Module)本质:以 `.py` 结尾的单个文件,包含Python代码(函数、类、变量等)。作用:将代码拆分到不同文件中,避免代码冗余,方便复用和维护。包(Package)在python里,包就是库本质:有层次的文件目录结构(即文件夹),用于组织多个模块和子包。核心特征:包的根目录下必须包含一个 `__init__.py` 文件(可以为空),用于标识该目录是一个包。
2025-08-02 08:57:05
640
原创 python学习DAY29打卡
定义类的方法,有2类写法1. 在类定义内部直接写方法,这是静态方法,一般定义类都这么完成。2. 在类定义外部定义方法,然后把方法赋值给类的属性---这是一种动态方法,常在装饰器中使用,可以再外部修改类的方法。两种方式的本质都是将函数对象绑定到类的属性上,只是语法和应用场景不同。装饰器中常用外部赋值,是为了在不修改原类代码的情况下增强类的功能。ps:之前无论是函数还是类的装饰器,我们都发现是先有装饰器,再有类。那既然我们说了装饰器除了让原本的代码更加清晰可读可复用,还具有修改函数or类的功能。
2025-08-01 08:41:45
805
原创 python学习DAY28打卡
类的定义pass占位语句类的初始化方法类的普通方法类的继承:属性的继承、方法的继承一个常见的类的定义包括了:1.关键字class2. 类名3. 语法固定符号冒号(:)4. 一个初始化函数__init__(self)注意:注意:init左右各有两个下划线__,需要传入self这个特殊的参数。
2025-07-31 08:51:01
579
原创 python学习DAY26打卡
"""Docstring: 描述函数的功能、参数和返回值 (可选但强烈推荐)"""# 函数体: 实现功能的代码# ...return value # 可选,用于返回结果def: 关键字,表示开始定义一个函数。function_name: 函数的名称,应遵循Python的命名约定(通常是小写字母和下划线,例如 calculate_area,用英文单词含义和下划线来作为函数名)。parameter1, parameter2, ...: 函数的参数(也叫形参),是函数在被调用时接收的输入值。
2025-07-29 23:29:59
871
原创 python学习DAY25打卡
DAY 25 异常处理内容:异常处理机制debug过程中的各类报错try-except机制try-except-else-finally机制Python的异常处理机制为程序提供了强大的容错能力 (fault tolerance)。当程序在运行时遇到意外情况(即异常),它不会直接崩溃,而是可以被设计成优雅地处理这些错误,并可能继续执行后续逻辑(如果设计允许)或以可控的方式结束。
2025-07-28 08:34:26
824
原创 python学习DAY24打卡
os.walk会首先访问起始目录 (my_project),然后它会选择第一个子目录 (data) 并深入进去,访问 data 目录本身,然后继续深入它的子目录 (processed -> raw)。只有当 data 分支下的所有内容都被访问完毕后,它才会回到 my_project 这一层,去访问下一个子目录 (src),并对 src 分支重复深度优先的探索。它不是按层级(先访问所有第一层,再访问所有第二层)进行的,而是按分支深度进行的。这种策略被称之为深度优先。
2025-07-27 09:25:55
785
原创 python学习DAY21打卡
PCA 的目标是保留数据的全局方差,而 t-SNE 的核心目标是在高维空间中相似的数据点,在降维后的低维空间中也应该保持相似(即彼此靠近),而不相似的点则应该相距较远。作为降维技术时,其核心目标是找到一个低维特征子空间(即原始特征的线性组合),使得在该子空间中,不同类别的数据点尽可能地分开(类间距离最大化),而同一类别的数据点尽可能地聚集(类内方差最小化)。LDA 降维后的维度(即生成的判别特征的数量)有一个严格的上限: min(n_features, n_classes - 1)。
2025-07-24 10:47:27
824
原创 python学习DAY20打卡
DAY 20 奇异值SVD分解内容:奇异值的应用1.特征降维:对高维数据减小计算量、可视化2.数据重构:比如重构信号、重构图像(可以实现有损压缩,k 越小压缩率越高,但图像质量损失越大)3.降噪:通常噪声对应较小的奇异值。通过丢弃这些小奇异值并重构矩阵,可以达到一定程度的降噪效果。4.推荐系统:在协同过滤算法中,用户-物品评分矩阵通常是稀疏且高维的。
2025-07-23 10:37:42
612
原创 python学习DAY19打卡
DAY 19 常见的特征筛选算法内容:方差筛选皮尔逊相关系数筛选lasso筛选树模型重要性shap重要性递归特征消除REF。
2025-07-22 10:53:17
419
原创 python学习DAY18打卡
2.后选特征:即一开始用全部特征进行聚类,得到聚类的新列之后将其作为标签y,其余特征作为x构建监督模型,然后通过shap值来得到对聚类标签贡献比较大的几个特征,通过这几个特征为簇类赋予实际意义(利用ai)。定义依据:男性、年龄中等偏大,心率反应尚可,ST 段呈上斜或平台,属于常见的“中度风险”人群。• thalach:中位≈135,IQR≈125-145,须线 120-150。• age:箱线图中位≈66,IQR≈62-70,须线 60-75。• thalach:中位≈150,IQR≈140-160。
2025-07-21 11:13:28
678
原创 python学习DAY17打卡
DAY 17 常见聚类算法知识点聚类的指标聚类常见算法:kmeans聚类、dbscan聚类、层次聚类三种算法对应的流程聚类一种无监督机器学习技术,用于将相似的数据点分组到一起。也可以理解为,把一堆数据自动分成若干“组”,让组内相似、组间不同。
2025-07-19 22:29:14
749
原创 python学习DAY16打卡
DAY 16 数组的常见操作和形状知识点:numpy数组的创建:简单创建、随机创建、遍历、运算numpy数组的索引:一维、二维、三维SHAP值的深入理解数组的简单创建NumPy 一维数组的元素之间默认使用分隔。Python 列表的元素之间使用分隔。
2025-07-18 23:13:18
682
原创 python学习DAY15打卡
尝试找到一个kaggle或者其他地方的结构化数据集,用之前的内容完成一个全新的项目,这样你也是独立完成了一个专属于自己的项目。主要内容:1.数据预处理(0-1映射、标签编码、缺失值处理2.描述性统计(特征与标签关系可视化3.绘制热力图4.加权随机森林。
2025-07-17 10:26:34
415
原创 python学习DAY14打卡
SHAP 通过严谨的数学框架,将“黑盒模型”的决策转化为人类可理解的特征贡献,帮助开发者调试模型、用户理解预测依据,并满足监管透明度需求(如金融、医疗领域)。
2025-07-16 23:15:48
318
原创 python学习DAY11打卡
常见的调参方式超参数调整专题1知识点回顾网格搜索随机搜索(简单介绍,非重点 实战中很少用到,可以不了解)贝叶斯优化(2种实现逻辑,以及如何避开必须用交叉验证的问题)time库的计时模块,方便后人查看代码运行时长。
2025-07-12 22:37:46
753
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人