自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 收藏
  • 关注

原创 Faiss库

图像 / 视频检索(如以图搜图、视频帧匹配);自然语言处理(如语义搜索、文本聚类、问答系统);推荐系统(如用户 / 物品向量匹配、相似商品推荐);人脸识别 / 生物特征匹配;大规模 embedding 数据的聚类或异常检测。

2025-07-14 23:48:26 1218

原创 Day60 复习日

思维导图:

2025-07-13 14:00:00 281

原创 Day59 经典时序预测模型3

显示中文# 1. 加载数据# 2. 划分训练集和测试集(保留最后12个月作为测试)print("--- 训练集 ---")print(train_data.tail()) # 观察训练集最后5行print("\n--- 测试集 ---")print(test_data.head()) # 观察测试集前5行# 3. 可视化原始数据plt.plot(train_data['Passengers'], label='训练集')

2025-07-12 14:17:03 1168

原创 Day58 经典时序预测模型2

导入必要的库# 设置matplotlib以正确显示中文# 加载数据print("--- 原始数据预览 ---")# 绘制时序图plt.title('1959年加州每日女性出生数量')plt.xlabel('日期')plt.ylabel('出生数量')plt.show()从图上看,数据点在一个稳定的水平线(大约40)上下随机波动。没有明显的上升或下降趋势,也没有看到以周或月为单位的固定模式。这给一个初步印象:这个序列很可能是平稳的。直觉需要被验证。使用ADF检验来科学地判断其平稳性。

2025-07-11 20:07:48 1068

原创 Day57 经典时序预测模型1

模型优势:AR (2) 系数显著,残差正态且同方差,拟合效果较好。改进点:常数项可移除,Ljung-Box 检验提示的潜在自相关需进一步验证(如检查更高阶滞后或尝试 ARMA 模型)。应用建议:可用于短期预测,后续需结合业务场景验证残差自相关是否影响预测精度。系数显著:模型准确地识别出前两阶的自回归关系是统计上显著的,并且学习到的系数值(0.66, 0.26)与真实值(0.7, 0.2)非常接近。非平稳性(趋势) -> 使用差分 (.diff())

2025-07-10 23:59:43 1013

原创 Day56 时序数据的检验

在时序预测中,这种要求会更加苛刻,设想一下,可以制造一个随机的序列,然后让模型来学习,这注定也是不可能实现的。也就是说数据本身要具备可预测性。一个完全随机的序列(学术上称为“白噪声”)是不可预测的。它的未来值与过去值没有任何相关性。任何模型试图从中学习规律,最终都只会是徒劳。什么叫做白噪声呢?均值为0方差恒定自相关性为0(即过去的值对未来的值没有影响)来生成一组随机序列# 中文显示设置plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置中文字体。

2025-07-09 23:23:48 730

原创 Day55 序列预测任务介绍

之前接触到的结构化数据,它本身不具备顺序,认为每个样本之间独立无关,样本之间即使调换顺序,仍然不影响模型的训练。但是日常中很多数据是存在先后关系的,而他们对应的任务是预测下一步的值,我们把这个任务称之为序列预测。举个例子,比如有过去30天的股票价格,我们希望预测第31天的价格。比如之前的单车预测,有前60天的单车需求数据,希望预测后面20天的销量。或者文本,人的语言是有顺序的,预测下一个单词是这也是序列预测任务。

2025-07-08 22:51:41 997

原创 Day54 Inception网络及其思考

"""Inception模块初始化,实现多尺度特征并行提取与融合参数:in_channels: 输入特征图的通道数"""# 1x1卷积分支:降维并提取通道间特征关系# 减少后续卷积的计算量,同时保留局部特征信息nn.Conv2d(in_channels, 64, kernel_size=1), # 降维至64通道nn.ReLU() # 引入非线性激活# 3x3卷积分支:通过1x1卷积降维后使用3x3卷积捕捉中等尺度特征# 先降维减少计算量,再进行空间特征提取。

2025-07-07 20:23:08 626

原创 Day53 对抗生成网络

标准relu: f(x) = max(0, x) 小于0的输入直接置为0,计算简单,能缓解梯度消失问题,引入非线性。存在 “神经元死亡” 问题(当输入为负时,梯度为 0,参数无法更新)LeakyReLU: f(x) = max(0.01x, x) 对负数输入保留一个小的梯度(如0.01倍),在输入为负时,仍有非零梯度(如 0.01),避免神经元永久死亡许多 GAN 变体(如 DCGAN、WGAN)都默认使用 LeakyReLU,实践证明它能显著提高模型收敛速度和生成质量。# 实例化模型并移动到指定设备。

2025-07-06 22:47:59 747

原创 Day52 神经网络调参指南

从权重的初始化到权重的可视化。

2025-07-05 23:35:38 1044

原创 Day51 复习日-模型改进

day43对自己找的数据集用简单cnn训练,现在用预训练,加入注意力等。

2025-07-04 23:28:16 256

原创 Day50 预训练模型+CBAM模块

是否可以对于预训练模型增加模块来优化其效果,这里会遇到一个问题:预训练模型的结构和权重是固定的,如果修改其中的模型结构,是否会大幅影响其性能。其次是训练的时候如何训练才可以更好的避免破坏原有的特征提取器的参数。所以需要回答2个问题。可以很明显的想到,如果是resnet18+cbam模块,那么大多数地方的代码都是可以复用的,模型定义部分需要重写。所以之前第一次使用resnet的预训练策略:先冻结预训练层,然后训练其他层。

2025-07-03 23:27:31 867

原创 Day49 CBAM注意力

cbam注意力之前介绍了se通道注意力,所有的模块本质上只是对特征进一步提取,今天进一步介绍cbam注意力CBAM 是一种能够集成到任何卷积神经网络架构中的注意力模块。它的核心目标是通过学习的方式,自动获取特征图在通道和空间维度上的重要性,进而对特征图进行自适应调整,增强重要特征,抑制不重要特征,提升模型的特征表达能力和性能。简单来说,它就像是给模型装上了 “智能眼镜”,让模型能够更精准地看到图像中关键的部分。

2025-07-02 22:34:09 903

原创 Day48 随机函数与广播机制

在 PyTorch 中,torch.randn()是一个常用的随机张量生成函数,它可以创建一个由标准正态分布(均值为 0,标准差为 1)随机数填充的张量。PyTorch 的广播机制(Broadcasting)是一种强大的张量运算特性,允许在不同形状的张量之间进行算术运算,而无需显式地扩展张量维度或复制数据。在深度学习中经常需要随机生成一些张量,比如权重的初始化,或者计算输入纬度经过模块后输出的维度,都可以用一个随机函数来实现需要的张量格式,而无需像之前一样必须加载一张真实的图片。

2025-07-01 23:47:21 793

原创 Day47 注意力热图可视化

热力图(红色表示高关注,蓝色表示低关注)半透明覆盖在原图上。(接Day46,相关模型代码参考Day46)捕获最后一个卷积层(

2025-06-30 23:31:59 616

原创 Day46 通道注意力(SE注意力)

注意力机制的由来,本质从onehot-elmo-selfattention-encoder-bert这就是一条不断提取特征的路。各有各的特点,也可以说由弱到强。其中注意力机制是一种让模型学会「选择性关注重要信息」的特征提取器,就像人类视觉会自动忽略背景,聚焦于图片中的主体(如猫、汽车)。transformer中的叫做自注意力机制,他是一种自己学习自己的机制,他可以自动学习到图片中的主体,并忽略背景。现在说的很多模块,比如通道注意力、空间注意力、通道注意力等等,都是基于自注意力机制的。

2025-06-29 22:32:16 773

原创 Day45 Tensorboard使用介绍

之前在神经网络训练中,为了帮助自己理解,借用了很多的组件,比如训练进度条、可视化的loss下降曲线、权重分布图,运行结束后还可以查看单张图的推理效果。如果现在有一个交互工具可以很简单的通过按钮完成这些辅助功能那就好了。所以现在介绍下tensorboard这个可视化工具,他有很多可视化的功能,尤其是他可以在运行过程中实时渲染,方便我们根据图来动态调整训练策略,而不是训练完了才知道好不好。

2025-06-28 23:32:38 709

原创 Day44 预训练模型

在残差块中,残差(Residual)被明确定义为主路径的输出 F (x)。普通神经网络中,每一层学习的是 “输入到输出的完整映射”,即假设输出为 H (x),则层的目标是学习 H (x);而 ResNet 中,残差块的输出被设计为,因此主路径需要学习的是—— 这里的 F (x) 就是 “残差”,即 “输出与输入的差异”。ResNet 中的残差(F (x))是主路径对输入特征的 “调整量”,残差块通过 “输入 + 残差” 的方式,让网络既能保留有效特征,又能灵活修正特征。

2025-06-27 23:39:01 1125

原创 Day43 复习日 图像数据集——CNN

kaggle找到一个图像数据集,用cnn网络进行训练并且用grad-cam做可视化1、kaggle上的图像数据集​​​​​​孟加拉鱼图片 --- Bengali Fish Images。

2025-06-26 22:35:43 800

原创 Day42 Grad-CAM与Hook函数

在深度学习中,经常需要查看或修改模型中间层的输出或梯度。然而,标准的前向传播和反向传播过程通常是一个黑盒,很难直接访问中间层的信息。PyTorch 提供了一种强大的工具——hook 函数,它允许在不修改模型结构的情况下,获取或修改中间层的信息。它的核心价值在于让开发者能够动态监听、捕获甚至修改模型内部任意层的输入 / 输出或梯度,而无需修改模型的原始代码结构。之前介绍过机器学习可解释性工具,例如 SHAP、PDPBox 等,这些工具在处理结构化数据时,能够有效揭示模型内部的决策逻辑。

2025-06-25 22:31:12 672

原创 Day41 简单CNN

CNN模型卷积的本质:通过卷积核在输入通道上的滑动乘积,提取跨通道的空间特征。所以只需要定义几个参数即可1. 卷积核大小:卷积核的大小,如3x3、5x5、7x7等。2. 输入通道数:输入图片的通道数,如1(单通道图片)、3(RGB图片)、4(RGBA图片)等。3. 输出通道数:卷积核的个数,即输出的通道数。如本模型中通过 32→64→128 逐步增加特征复杂度4. 步长(stride):卷积核的滑动步长,默认为1。

2025-06-24 23:38:08 988

原创 Day40 训练和测试的规范写法

批量维度不变性:无论进行flatten、view还是reshape操作,第一个维度batch_size通常保持不变。动态维度指定:使用-1让PyTorch自动计算该维度的大小,但需确保其他维度的指定合理,避免形状不匹配错误。

2025-06-23 23:21:48 922

原创 Day39 图像数据与显存

图像相关的神经网络的定义(不涉及训练和测试过程)# 先归一化,再标准化transforms.ToTensor(), # 转换为张量并归一化到[0,1]transforms.Normalize((0.1307,), (0.3081,)) # MNIST数据集的均值和标准差,这个值很出名,所以直接使用])# 2. 加载MNIST数据集,如果没有会自动下载# 定义两层MLP神经网络self.flatten = nn.Flatten() # 将28x28的图像展平为784维向量。

2025-06-22 23:15:01 731

原创 Day38 Dataset和Dataloader类

CIFAR(Canadian Institute For Advanced Research)数据集是计算机视觉领域的经典基准数据集,由加拿大高级研究所的 Alex Krizhevsky、Vinod Nair 和 Geoffrey Hinton 创建,主要用于图像分类任务的模型训练与评估。该数据集分为 CIFAR-10 和 CIFAR-100 两个版本,两者在数据结构和应用场景上既有相似性又有明显区别。

2025-06-21 20:16:37 909

原创 Day37 早停策略和模型权重的保存

训练集的loss在下降的时候,有可能出现过拟合现象:模型过度学习了训练集的信息,导致在测试集上表现不理想。所以同步打印测试集的loss,以判断是否出现过拟合现象。

2025-06-20 23:12:24 676

原创 Day36 复习日

【代码】Day36 复习日。

2025-06-19 19:43:58 957

原创 Day35 模型可视化与推理

设置设备print(f"使用设备: {device}")# 加载数据# 划分数据集# 数据归一化# 转换为PyTorch张量# 定义更复杂的网络结构nn.ReLU(),nn.ReLU(),nn.ReLU(),return x# 实例化模型# 定义损失函数和优化器# 如需获取学习率,使用get_last_lr()current_lr = optimizer.param_groups[0]['lr'] # 或 scheduler.get_last_lr()# 训练设置。

2025-06-18 23:40:41 709

原创 Day34 GPU训练及类的call方法

在 Python 中,call方法是一个特殊的魔术方法(双下划线方法),它允许类的实例像函数一样被调用。这种特性使得对象可以表现得像函数,同时保留对象的内部状态。# 我们来看下昨天代码中你的定义函数的部分class MLP(nn.Module): # 定义一个多层感知机(MLP)模型,继承父类nn.Moduledef __init__(self): # 初始化函数super(MLP, self).__init__() # 调用父类的初始化函数# 前三行是八股文,后面的是自定义的。

2025-06-17 22:34:53 807

原创 Day33 MLP神经网络的训练

未来在复现具体项目时候,新环境命名最好是python版本_pytorch版本_cuda版本,例如 py3.10_pytorch2.0_cuda12.2 ,因为复杂项目对运行环境有要求,所以需要安装对应版本的包。其实模型层的写法有很多,relu也可以不写,在后面前向传播的时候计算下即可,因为relu其实不算一个层,只是个计算而已。这里的cuda版本是实际安装的cuda驱动的版本,需要小于显卡所支持的最高版本。这里的gpu指的是英伟达的显卡,它支持cuda可以提高并行计算的能力。定义层数+定义前向传播顺序。

2025-06-16 23:20:57 941

原创 Day32 官方文档的阅读

很多绘图工具都是调用的底层的绘图包,所以要想绘制出想要的图表,需要先了解底层绘图包的语法。在官方文档中,通常会有一个“API Reference”或“Documentation”部分,列出所有可用的函数、类和方法。可以发现这个类继承了_InfoPlot类,此时我们再次进入_InfoPlot类里面,可以找到这个继承的plot方法。可以鼠标悬停在这个类上,来查看定义这个类所需要的参数,以及每个参数的格式。在官方文档介绍中的plot方法最下面,写明了参数和对应的返回值。最后,我们用规范的形式来完成。

2025-06-15 20:03:03 906

原创 Day31 文件的规范拆分和写法

一个典型的机器学习项目通常包含以下阶段:notebooks/ 或 experiments/ 目录:用于初期的数据探索、快速实验、模型原型验证。这部分往往是最开始的探索阶段,后面跑通了后拆分成了完整的项目,留作纪念用。如何把一个文件,拆分成多个具有着独立功能的文件,然后通过import的方式,来调用这些文件。这样具有几个好处:这个项目实现了一个信用违约预测模型,使用随机森林算法对客户是否会发生信用违约进行预测。快速开始安装依赖:requirements.txt的内容:运行模型训练:

2025-06-14 19:35:38 789

原创 Day30 模块和库的导入

模块(Module)本质:以.py结尾的单个文件,包含Python代码(函数、类、变量等)。作用:将代码拆分到不同文件中,避免代码冗余,方便复用和维护。包(Package)在python里,包就是库本质有层次的文件目录结构(即文件夹),用于组织多个模块和子包。核心特征:包的根目录下必须包含一个文件(可以为空),用于标识该目录是一个包。

2025-06-13 18:54:13 1416 1

原创 Day29 复习日:类的装饰器

注意到其中的cls.log = log_message 这行代码,他把外部的函数赋值给了类的新定义的属性,这里介绍这种写法实际上,定义类的方法,有2类写法在类定义内部直接写方法,这是静态方法,一般定义类都这么完成。在类定义外部定义方法,然后把方法赋值给类的属性---这是一种动态方法,常在装饰器中使用,可以再外部修改类的方法。本质区别特性类内部定义方法外部赋值定义方法语法在class块内使用def定义函数后赋值给类属性(如作用域方法可以直接访问类的其他私有成员需要通过self或类名显式访问。

2025-06-12 14:15:04 875

原创 Day28 类的定义和方法

要求:1、包含属性:半径 radius。2、包含方法:calculate_area():计算圆的面积(公式:πr²)。calculate_circumference():计算圆的周长(公式:2πr)。3、初始化时需传入半径,默认值为 1。# 示例运行print(f"半径:{circle.radius}") # 输出:半径:5print(f"面积:{circle.calculate_area()}") # 输出:面积:78.54(保留两位小数)

2025-06-11 19:23:28 686

原创 Day27 函数专题2:装饰器

装饰器(Decorator)是 Python 中一种强大的编程工具,核心作用是(如日志记录、性能统计、权限校验等)。它充分利用了 Python 中 “函数是一等公民”(可作为参数传递、赋值、返回)的特性,通过 “包装” 原函数来扩展其行为。装饰器本质是一个。它接收被装饰的函数作为参数,返回一个 “包装后的新函数”。这个新函数在保留原函数功能的基础上,增加了额外逻辑。

2025-06-10 19:34:02 746

原创 Day26 函数专题1:函数定义与参数

函数的基本写法如下所示:"""Docstring: 描述函数的功能、参数和返回值 (可选但强烈推荐)"""# 函数体: 实现功能的代码# ...return value # 可选,用于返回结果注意点: 定义的时候把函数的参数称之为形参,调用的时候把函数的参数称之为实参。

2025-06-09 22:15:45 963

原创 Day25 异常处理

异常指的是程序运行过程中发生的。

2025-06-08 22:38:13 783

原创 Day24 元组和OS模块

1、元组(

2025-06-07 14:05:09 836

原创 Day23 pipeline管道

是用于对数据进行转换或预处理的工具,其核心功能是将输入数据从一种表示形式转换为另一种形式,以便于模型更好地学习或分析。转化器通常需要满足以下特点:(1)拟合(Fit)和转换(Transform):先通过拟合数据学习转换规则(如均值、方差),再应用规则对数据进行转换。(2)无监督或有监督:多数转化器是无监督的(如特征缩放),少数可能依赖标签(如标签编码)。常见类型与场景:(1)数据预处理特征缩放:如标准化(StandardScaler)、归一化(MinMaxScaler),将特征值缩放到特定范围。

2025-06-06 18:26:04 950

原创 Day22 复习日

可以通过邮箱、Google、Facebook 等方式注册。:尽量完整填写个人资料。:根据自己的兴趣和实际数据分析能力选择竞赛。对于初学者,建议从一些入门级或小型竞赛开始,逐步积累经验;有一定基础后再挑战更具难度的竞赛。:在参与竞赛前,务必仔细阅读竞赛的规则,包括比赛时间节点(报名时间、提交结果截止时间、评审时间等)、评分标准、数据使用规定、是否允许组队等重要信息。违反竞赛规则可能导致取消参赛资格。:大部分竞赛的数据可以在竞赛页面直接下载,注意数据的存储和管理,确保数据的完整性和安全性。

2025-06-05 22:19:48 968

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除