- 博客(45)
- 收藏
- 关注
原创 SotMax函数的对数版本Log-SoftMax
Log-Softmax在处理大规模多类分类问题时非常有用,尤其是在模型需要处理大量输出类别时。它使得从logits到损失计算的过程更直接、更高效,并且通过避免直接的概率计算,降低了因数值问题导致的误差。
2024-07-31 16:48:31
754
原创 交叉熵损失
交叉熵是一种常用于的方法,特别是在分类任务中用于评估模型的输出与真实标签之间的匹配程度。在机器学习中,特别是在使用神经网络进行多类分类时,交叉熵损失函数被广泛使用。
2024-07-31 15:28:17
649
原创 SoftMax函数
Softmax函数是一种常用于多类分类任务的激活函数,其主要作用是将一个实数向量转换成一个概率分布。每个元素的值在(0)到(1)之间,并且所有元素的和为(1)。
2024-07-31 15:02:43
1232
原创 ClipReID的监督对比损失SupConLoss
SupConLoss继承自nn.Module,这是 PyTorch 中所有神经网络模块的基类。在初始化方法__init__中,它接受一个device参数,用来指定运算应该在哪个设备上进行(如CPU或GPU)。是一个标量,用于控制损失计算中的温度参数,影响特征向量之间相似度的缩放。
2024-07-31 14:50:49
507
原创 torch.cuda.amp的功能
在PyTorch中,模块提供了自动混合精度(Automatic Mixed Precision, AMP)的工具,这是一种用于加速深度学习模型训练的技术,同时还可以减少模型训练过程中所需的内存。使用这个模块,可以在不牺牲模型精度的情况下提高训练速度和效率。
2024-07-31 11:48:17
409
原创 深度学习训练过程中,每个batch需要保存记录的关键数据
在深度学习训练过程中,为了监控模型的训练效果和调整训练策略,需要针对每个batch记录一些关键数据。这些数据不仅帮助我们理解模型在训练集上的表现,还有助于早期发现过拟合、欠拟合或其他潜在问题。
2024-07-31 11:26:57
1087
原创 深度学习中的batch, iteration, epoch之间的关系
假设有一个包含60000个样本的训练集,如果设置batch size为1000,则每个epoch包含60次迭代。在整个训练过程中,你会设置一个epoch数,表示你希望整个数据集通过模型训练多少次。每个epoch包含多次迭代,每次迭代处理一个batch的数据。因此,迭代次数是根据给定的batch size和数据集大小计算得出的。这种训练方式有助于优化内存使用,同时可以通过随机梯度下降(SGD)或其变体来有效更新网络权重,这通常比使用整个数据集计算精确梯度更高效、更快速。这也有助于模型泛化,避免过拟合。
2024-07-31 10:58:48
626
原创 怎样使用Google Colab
Google Colab是一个非常方便的在线工具,允许你在浏览器中运行Python代码并使用Jupyter笔记本。
2024-07-29 14:38:17
1207
原创 Numpy库的功能介绍
NumPy 是 Python 中用于科学计算的基础库之一。它提供了支持高效操作大型多维数组和矩阵的功能,并且包含了大量的数学函数库。以下是对 NumPy 的详细介绍,包括常用功能和示例代码。
2024-07-25 14:14:09
402
原创 排列和组合
排列公式 ( P(n, k) )从 ( n ) 个元素中选取 ( k ) 个元素,并考虑顺序。公式为:[ P(n, k) = \frac{n!}{(n-k)!} ]组合公式 ( C(n, k) )从 ( n ) 个元素中选取 ( k ) 个元素,不考虑顺序。公式为:[ C(n, k) = \frac{n!}{k!(n-k)!} ]这两个公式基于排列组合的基本原理,通过选择和排列元素的步骤推导而来。
2024-07-24 16:38:44
1836
原创 Transformer中的自注意力是怎么实现的?
在Transformer模型中,自注意力(Self-Attention)是核心组件,用于捕捉输入序列中不同位置之间的关系。自注意力机制通过计算每个标记与其他所有标记之间的注意力权重,然后根据这些权重对输入序列进行加权求和,从而生成新的表示。下面是实现自注意力机制的代码及其详细说明。
2024-07-18 22:30:49
1407
原创 Transformer是怎样处理序列数据的?
Transformer模型最初是一种广泛应用于自然语言处理(NLP)和其他序列建模任务的架构。它由编码器(encoder)和解码器(decoder)组成。
2024-07-18 22:10:48
1566
原创 CLIP及其对齐的概念、思想、实现
在测试时,CLIP可以直接实现zero-shot的图像分类,即**不需要任何训练数据,就能在某个具体下游任务上实现分类。对于一个包含N个文本-图像对的训练Batch,计算文本特征和图像特征的余弦相似度。CLIP的全称是,Contrastive Language-Image Pre-training。在训练时,训练目标是最大化N个正样本的相似度,同时最小化负样本的相似度。构建了一个包含4亿对(图像、文本)的新数据集WebImageText。,即真正属于一对的文本和图像(矩阵中的对角线元素),而剩余的。
2024-07-15 19:46:57
2122
原创 CLIP-ReID代码解读八——loss文件夹(triplet_loss.py)
"""归一化到单位长度,沿指定维度进行。Args:x: PyTorch 变量Returns:x: PyTorch 变量,形状与输入相同"""return x"""计算两个张量之间的欧氏距离。Args:x: PyTorch 变量,形状 [m, d]y: PyTorch 变量,形状 [n, d]Returns:dist: PyTorch 变量,形状 [m, n]"""
2024-06-24 15:00:54
836
原创 CLIP-ReID代码解读八——loss文件夹(make_loss.py)
创建一个损失函数和中心损失(CenterLoss)准则。这段代码定义了一个函数。
2024-06-24 14:44:32
1016
原创 CLIP-ReID代码解读七——model.py下
CLIP类实现了一个多模态模型,可以同时处理图像和文本,生成它们的嵌入表示,并计算它们之间的相似度。模型使用视觉编码器(或)和文本编码器(Transformer)来处理输入,并计算图像和文本之间的相似度。这种设计使得模型可以在图像-文本匹配和检索任务中表现出色。
2024-06-24 13:47:33
838
原创 深度学习中常用的权重初始化方法以及Pytorch实现
在深度学习中,常见的权重初始化方法包括零初始化、随机初始化、Xavier(Glorot)初始化、He初始化、正交初始化、Lecun初始化等。这些方法在不同的场景和网络结构下有不同的效果。
2024-06-24 10:13:57
663
原创 CLIP中的logit_scale参数
这行代码定义并初始化了一个可训练的参数,用于在计算图像和文本特征的相似度时进行缩放。通过这种方式,模型可以在训练过程中调整相似度的动态范围,以便更好地学习图像和文本特征之间的匹配关系。
2024-06-24 09:46:19
1868
原创 NLP中文本的嵌入层
定义词汇表大小和嵌入向量的维度vocab_size = 5 # 词汇表包含 5 个单词embedding_dim = 3 # 每个嵌入向量的维度为 3# 创建嵌入层在这个例子中,我们的词汇表大小为 5,每个单词的嵌入向量维度为 3。离散输入:原始文本被转换为单词索引序列,这些索引是离散的整数。嵌入层:嵌入层将离散的单词索引转换为连续的高维向量。模型输入:嵌入向量作为模型的输入,用于进一步的计算和训练。学习内容:模型通过训练学习嵌入层的权重和其他网络参数,以更好地表示和处理输入数据。
2024-06-23 17:24:10
1062
原创 transformer中的build_attention_mask
方法通过生成一个上三角掩码矩阵,确保了每个位置 ( i ) 只能关注位置 ( 0 ) 到 ( i ),而不能关注位置 ( i+1 ) 及之后的位置。这个机制通过在注意力分数计算中设置负无穷大,使得这些位置在 softmax 计算中得到接近零的权重,从而 effectively 被忽略。这对于生成任务(如语言模型)非常重要,确保模型在生成时只依赖已生成的部分,而不会看到未来的输入。
2024-06-23 17:00:16
924
原创 CLIP-ReID代码解读七——model.py上
expansion: 一个类属性,表示通道数扩展倍数。对于标准的ResNet,expansion通常为 4。__init__: 初始化函数,用于定义该模块的所有层和参数。inplanes: 输入通道数。planes: 输出通道数的一部分。stride: 卷积层的步幅。conv1: 一个 1x1 的卷积层,用于减少通道数。bn1: 第一个批归一化层。conv2: 一个 3x3 的卷积层,用于提取特征。bn2: 第二个批归一化层。avgpool。
2024-06-23 16:14:06
1242
1
原创 Transformer中的类别嵌入
这一行代码在类中创建并初始化了一个类别嵌入向量。该向量是一个可训练的参数,用于表示输入序列的全局信息,并在模型训练过程中进行优化。类别嵌入(class embedding)在 Vision Transformer 中用于表示输入序列的全局信息,因为它在前向传播中通过自注意力机制与所有图像补丁嵌入进行交互,从而捕获整个序列的全局特征。在分类任务中,这个类别嵌入最终用于做出分类决策,因此它被设计为包含全局信息。这行代码通过在序列开头添加一个类别嵌入向量,将输入张量的形状从扩展到。
2024-06-23 16:12:32
1327
原创 python中的*运算符
这行代码通过列表生成表达式创建了layers个实例的列表,然后使用运算符将这些实例解包,并按顺序传递给。最终,变成了一个包含多个实例的顺序容器,每个实例按顺序应用于输入数据。这样做的好处是代码简洁且易于扩展,使得构建复杂的网络结构更加方便。
2024-06-23 15:35:28
427
原创 残差网络中的基础结构——残差模块
在传统的深度神经网络中,随着网络层数的增加,反向传播的梯度会逐渐减小或增大,导致网络难以收敛或变得不稳定。该现象的一种解释是,当网络变得非常深时,低层参数的微小变动会引起高层参数的剧烈变化,使得优化算法难以找到最优解。然而在残差结构提出之前,实验证明,随着网络层数的增加,模型的准确率起初会不断提高,直至达到最大饱和值。然后,随着网络深度进一步增加,模型的准确率不再增加,反而可能出现明显的降低,这被称为“退化问题”,该问题的发生主要是由于深度神经网络训练中的梯度消失和梯度爆炸问题。
2024-06-21 10:14:27
5974
原创 CLIP-ReID代码解读六——model文件夹make_model.py和clip.py
上述代码的主要功能是定义一个基于视觉Transformer的神经网络模型,包括初始化权重、前向传播、加载预训练参数等操作。CLIP模型是一种用于图像和文本对齐的模型。综上,这行代码的作用是加载一个TorchScript保存的JIT模型,并将其设置为评估模式,确保在推理时模型行为的一致性。这段代码的主要功能是提供CLIP模型的下载、加载、图像预处理和文本标记化功能,确保模型和数据能够正确地用于训练和推理。通过这段代码,文件会被从URL下载到本地指定的路径,并且下载过程中的进度会以进度条的形式显示在控制台上。
2024-06-20 21:10:42
1338
原创 CLIP-ReID代码解读五——dataset文件夹(数据集读取和处理)
这段代码定义了一个用于处理 Market-1501 数据集的类Market1501,该数据集常用于行人重识别任务。该类继承自初始化数据集路径。检查数据集文件是否存在。处理图像目录,提取图像路径、行人ID、摄像机ID等信息,并根据需要重新标注行人ID。打印数据集统计信息。计算并存储训练集、查询集和图库集的图像数量和行人数量等信息。其中是一条用来创建正则表达式模式的语句,用于从文件名中提取行人ID(pid)和摄像机ID(camid)。
2024-06-19 16:15:34
1418
原创 梯度下降法
梯度下降法通过不断更新模型参数来最小化损失函数,是训练机器学习模型的基本方法。不同的变种和优化算法可以针对不同的问题提供更高效和稳定的解决方案。
2024-06-18 15:34:13
605
原创 CLIP-ReID代码解读三——configs文件夹(yaml配置文件)
四个文件中都对config文件夹中的六个配置节点:model, input, dataloader, dataset, solver, test给出了具体的参数。通过这些配置参数,可以灵活地调整模型训练和测试的各个方面,从而进行不同的实验和优化。的baseline模型配置文件和clipreid配置文件,以及。主要关注行人重识别,所以分析其中的person文件夹。的baseline模型文件和clipreid配置文件。该文件夹中共有四个yaml文件,分别是。
2024-06-17 22:44:05
762
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人