- 博客(27)
- 收藏
- 关注
原创 池化层/汇聚层以及L2池化
在网络的最后,特征送入全连接层之前,进行一次全局平均池化,一个7x7的特征,降低为1x1的特征,这里是为了给经过一层层抽象后的特征保留更多的信息。最大池化选择池化窗口中数值最大的元素,这意味着它优先保留局部区域中最显著的特征,忽略其他较小的值,保留图像中的关键信息,所以对与边缘、轮廓等高对比度的信息十分有效。平均池化计算池化窗口内所有元素的平均值,考虑了池化窗口中所有像素的贡献,从而保留了局部区域的整体信息,所以其具有更强的平滑效果,并且能够保留更多的信息,比如背景信息。,都是汇聚,都是池化。
2024-10-17 15:49:37
1183
1
原创 目标检测指标:AP,mAP
AP通过估计曲线的AUC来评估目标检测模型的准确率。根据曲线使用的插值方法,有两种不同的AP计算方法。不同工作中和AP实现中缺乏共识是学术和科学界面临的问题。用不同计算语言编写的度量实现通常与相应的数据集一起分发,共享给定的边界框描述。这些项目确实为社区提供了评估工具,但需要额外的工作来适应其他数据集和边界框格式。本工作回顾了用于对象检测的最常用度量标准,分析了它们的差异、应用和主要概念。
2024-10-09 17:09:18
1654
原创 ONNX加载和保存模型
ONNX 作为一个开放的模型格式,可以极大地提高模型在不同框架和平台之间的可移植性。通过学习如何将模型转换为 ONNX 格式,并使用 ONNX Runtime 进行推理和优化,你可以更高效地部署和管理你的机器学习模型。ONNX(Open Neural Network Exchange)是一个开放的格式,用于表示机器学习模型。它使得不同框架之间的模型可以互操作,方便模型的迁移和部署。在这个示例中,将一个预训练的 ResNet-18 模型转换为 ONNX 格式并保存为。只有一个元素的时候才能够使用。
2024-08-29 12:23:53
1197
原创 timm加载模型
其实这些东西都是保持的权重,使用对应的加载方法后,可以使用。但是timm提供了方便的接口。可在timm模型页面下载。首先要查看去哪里下载。
2024-08-29 12:17:55
384
原创 归纳偏置Inductive Bias
通过合理的归纳偏置,机器学习模型可以在复杂的任务中更高效地进行学习和泛化,就像探险家通过不完整的地图和提示,更快找到宝藏一样。CNN假设图像中的像素在局部区域内具有较强的相关性,即临近的像素点之间的关系比远离的像素点之间的关系更紧密。是一种在机器学习中常用的技术,通过向损失函数中添加一个正则化项,惩罚模型的某些特性,进而引导模型学习出更符合特定偏好的解。归纳偏置(Inductive Bias)是机器学习中的一个重要概念,它指的是模型在学习过程中所固有的假设或偏好,用来。正则化,它倾向于选择稀疏的解。
2024-08-26 12:23:37
892
1
原创 卷积层的参数与FLOPS
在卷积层中,卷积核(也称为滤波器)是一个小的、可学习的矩阵,通常比输入图像的尺寸小得多。每个卷积核在输入图像上滑动(即进行卷积运算),在滑动过程中与输入图像的局部区域进行逐元素相乘并累加,生成一个特征图(Feature Map)。FLOPs(Floating Point Operations, 浮点运算次数)。是卷积核的空间尺寸(例如。输出通道数就是卷积核的个数。是先乘法运算,再加法运算。,在所有输入通道上应用。对于一个卷积层而言,是单个卷积核的参数。
2024-08-11 14:53:05
763
原创 调和平均数
调和平均数(Harmonic Mean)是一种特殊的平均数形式——倒数平均数的倒数它更强调较小数值的影响,因此在某些情况下比算术平均数更适合反映数据的综合情况。均方平均数强调较大值的影响更多,因此通常是四者中最大的。算术平均数是对数值的均等贡献的平均。几何平均数是对乘积的均等贡献的平均,适用于处理比率和比例。调和平均数强调较小值的影响更多,通常是四者中最小的。
2024-08-06 12:27:23
1953
原创 DataLoader会将Dataset的数据转换为Tensor类型
通过这种方式,可以灵活地控制数据加载和转换过程。如果DataLoader默认的行为无法满足需求,提供自定义 collate 函数是一个不错的解决方案。
2024-07-11 12:07:59
1130
原创 Pytorch自定义Dataset,及__getitem__()访问
首先,实现继承自的自定义类,并重写方法。"""初始化自定义数据集。Args:data (list): 数据列表。""""""返回数据集的大小。Returns:int: 数据集的大小。""""""根据索引获取数据项。Args:idx (int): 数据项的索引。Returns:data: 索引对应的数据项。"""实现自定义数据集类,并重写方法。通过实例化自定义数据集类并使用索引访问数据项。通常使用语法来调用方法,而不是直接调用。可以使用DataLoader。
2024-07-10 20:59:51
665
原创 提示微调、提示工程、微调【Prompt Tuning、Prompt Engineer、Fine Tuning 】
Prompt Tuning 提示微调Fine Tuning 微调Prompt Engineer 提示工程参考:提示微调是一个高效的、低成本的方法去调整基础模型去适应新的下游任务,而不用去重新训练模型,更新其参数。提示工程:设计输入的模板,以使预训练模型产生更好的输出。微调:对于预训练模型,在下游新任务的数据集上进行训练,调整模型权重,以适应新任务。提示微调:在输入的模板中加入可学习参数。训练过程中,将模型进行冻结,只对输入提示的可学习参数进行调整。
2024-07-05 15:20:49
728
原创 提示微调、提示工程、微调【Prompt Tuning、Prompt Engineer、Fine Tuning】
提示工程是人依据经验对提示进行调整,调整的是人能看懂的“硬”提示。“硬”提示在送入模型之前也要转换成embeddings,是“软”提示,而提示微调就是在这里进行工作。提示微调对“软”提示加一些“数字”——可学习参数,在训练过程中对这些参数进行学习,以实现更好的效果。前三行可以说是提示工程,使用不同的模板,调整“硬”提示提高性能。而第四行CoOp(提示微调的方法)调整“软”提示,去提高性能。提示微调是一个高效的、低成本的方法去调整基础模型去适应新的下游任务,而不用去重新训练模型,更新其参数。
2024-07-05 14:38:41
436
原创 pandas读取csv文件
如果数据文件没有列名,可以将 header 设置为 None,Pandas 会自动分配数值型列名,如0, 1, 2, 3, …sub_df = df.iloc[0:2, 1:3] # 返回一个DataFrame,包含从第0行到第2行和第1列到第3列的切片。CSV(Comma-Separated Values,逗号分隔值)文件是一种常见的、用于存储表格数据的。是 Pandas DataFrame 的一个方法,用于基于行和列的整数位置进行索引和切片操作。Pandas 库最常用的两个数据结构是。
2024-07-03 13:36:25
678
原创 查看一个类的所有基类
object是所有类的“祖宗类“,即所有类都直接或者间接继承了object,object是没有父类的。Python的类是多继承的,一个子类可以有多个基类(父类)。返回一个类的直接基类。如果一个类有多个基类,属性来递归地获取一个类的所有基类。返回该类的所有直接基类的元组。返回的是第一个基类。返回这个对象的类名。类.__base__
2024-07-03 12:50:05
295
原创 自定义灰度图
将RGB图像转换为灰度图像的过程涉及将每个像素的红色、绿色和蓝色分量组合成一个单一的灰度值。这通常通过加权求和来实现,因为人眼对不同颜色的敏感度不同。标准的方法使用加权系数来平衡红、绿、蓝三种颜色的贡献。这些权重基于人眼对颜色的感知。官方的实现和自定义的有些许不同,看了一下图像数组中元素,可能是取整原因,不少元素相差1。可以把rgb的比例值调一调玩玩。
2024-06-28 12:17:15
393
原创 统计模型的参数
layer 2, 3, 4层的downsample是对残差传过来的上一层处理结果进行的,kernel_size = 1, stride = 2,维度翻倍,尺寸减半。保存的’'.pth文件大小也说明了这一点,虽然不是完全一样大,但大小差不多,可能与状态字典多的键值有关。以pytorch官方的resnet18为例。方法返回一个迭代器,用于同时访问模型中的参数和它们的名称。方法返回一个迭代器,用于访问模型中所有需要梯度更新的参数。计算模型的参数量以及大小。resnet18的构造。
2024-06-26 16:02:01
422
原创 模型修改后加载预训练权重
在深度学习中,“BN” 是 Batch Normalization(批标准化)的缩写,是一种用于加速神经网络训练和提高模型性能的技术。Batch Normalization 通过对每个批次的输入进行标准化,将输入归一化为均值为0、方差为1的分布,从而减少了内部协变量偏移(Internal Covariate Shift),有助于网络的训练。但当把这些当前模型的状态字典保存,再加载,还是122。中间发现个小问题,官方给的状态字典的key比。为什么两个字典中红的key数量不同。返回的状态字典键数少。
2024-06-24 19:42:48
1487
原创 python_zip
zip()是 Python 的一个内置函数,用于将多个可迭代对象(如列表、元组)打包成一个迭代器,其中每个元素是一个元组,这些元组包含了输入可迭代对象中的对应元素。zip()函数通常用于并行迭代多个可迭代对象。
2024-06-24 17:13:42
288
原创 python字典-dict
字典是“键值对”的无序可变序列。定义字典时,每个元素的键和值用冒号隔开,相邻元素用隔开,所有的元素放在一对{}中。字典的键可以是python中的任意不可变数据,即不能使用列表、集合、字典作为字典的键,。内置函数globas()返回当前作用域内所有全局变量和值的字典,loacals返回当前作用域内所有局部变量和值的字典。
2024-06-24 17:12:56
274
原创 为什么要内存对齐
这样的话,如果我们将一个int型的变量存储在非4倍数开始的起始块中,要想获取这个变量,要访问两次内存,还要进行拼接。若要取出num,需要先进行一次内存访问,取出num的前三个字节,再次进行内存访问,取出num的最后一个字节。结构体的总大小为结构体最宽基本类型成员大小的整数倍,如有需要编译器会在最末一个成员之后加上填充字节{trailing padding}。:结构体和类的对齐要求是其成员中的最大对齐要求。因此,如果结构体或类包含一个double和一个int,它的对齐要求将是8字节。
2023-09-19 23:26:40
53
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人