- 博客(92)
- 收藏
- 关注
原创 Visual Prompt Tuning核心思路讲解(个人总结)
VPT的核心思想是,在适配下游任务时,我们应当冻结 (freeze) 强大的预训练模型本身,只通过训练一小组额外添加的、轻量级的来引导模型的行为。这很容易理解,想想GPT:为什么一个Transformer Decoder能做这么多事?就是因为对于不同的任务,我们会喂给模型不同的prompt麻。
2025-07-15 11:49:55
344
原创 Swin Transformer核心思路讲解(个人总结)
Swin Transformer 的 patch merging 模块使得特征逐步在层级上聚合,构建更丰富的语义层次;而 Swin Transformer block 则在显著降低计算开销的同时,尽量保持不同区域间的有效信息交流。二者共同协作,实现了在计算效率和全局表达能力之间的良好平衡。这里只总结了个人觉得核心的点,具体讲解请参考这里。
2025-07-12 10:39:54
313
原创 vit如何由patch得到embedding
这是最关键的一步,它让卷积核在计算完一个Patch后,直接“跳”到下一个不重叠的Patch上。卷积核数量 (Kernel Count): 设为 768。这决定了每个Patch最终生成的嵌入向量维度。个图像块 (Patch) 的嵌入向量。这个原理的核心,是巧妙地利用单次卷积操作,同时实现“切块”和“特征提取”两个任务。的卷积核以16的步长滑过整个图像时,其输出就是一个。这确保了卷积核的“视野”恰好覆盖一整个Patch。Patch的嵌入表示 (Embedding)。的RGB图像,我们的目标是得到。
2025-07-03 18:41:35
337
原创 关于windows中5070ti显卡不被torch支持的问题
(推荐运行cmd时以管理员权限运行,不然执行上述pip命令时,可能会遇到**[WinError 5]拒绝访问**这个错误。新买了5070ti,发现sm120无法被sbale版本的pytorch支持。解决途径也比较简单,和。4.复制这个包的本地地址为【本地地址】,在你的新环境中。1.conda创建python=3.9的新环境。说法基本一致,个人总结为如下三点。
2025-06-19 12:01:08
342
原创 NNLM和word2vec的区别
将前N个词的embedding拼接起来得到向量,将该向量首先通过一个隐藏层,再映射到大小为V的线性层,进行预测即可。而word2vecz则去掉了隐藏层。此外,CBOW不再采用拼接的方式,而将N个词的embedding直接进行相加。
2025-06-04 18:23:18
177
原创 关于词向量的思考
最近刚学习。NNLM网络在训练过程中为每个单词生成了一个词向量,但从表示每个单词语义信息的的角度来说,生成质量不佳,于是有了后来的word2vec,转么学习高质量的词向量表示。.4f.4f可以发现,word2vec网络更简洁了。
2025-05-15 18:56:27
255
原创 pytorch nn.RNN demo
可以看到,nn.RNN默认会输出两个张量:一个是最后一个时间步的所有层,一个是最后一层的所有时间步。它是不会输出“所有时间步的所有层”的。
2025-05-15 17:13:12
324
原创 pytorch RNNCell
可以看到,每一次把输入送入RNNCell的过程,就是把输入部分和隐藏状态部分分别经过简单全连接层,并接上激活函数的过程。pytorch RNNCell的一次前馈本质上就是一个线性层。
2025-05-15 00:58:29
277
原创 NNLM神经网络语言模型总结
一开始还以为很复杂,总结一下就是:NNLM 将某个单词前 n−1 个词各自转为 embedding,拼接成一个 (n−1)⋅d 维的向量,再通过隐藏层 + 输出层 + softmax,预测下一个词的概率分布可以发现,这个2003年提出的模型在架构上和GPT,都是用之前的文字预测下一个文字;都是用之前文字的embedding经过一个特殊层(前者是FFN,后者是transformer decoder)来得到一个词表向量,根据向量的分量大小选择某个单词。
2025-05-14 17:26:38
347
原创 【bag of n-grams】 N-gram词袋模型 简介
Bag of n-grams是Bag of Words的扩展,它的核心思想是:忽略语序,只统计各个 N-gram 在文本中出现的次数或是否出现。
2025-05-13 20:39:37
346
原创 Sliding Window Attention(Longformer)
最简单的自注意力大家肯定都会啦。但这种全连接的自注意力(即每个 token 需要 attend 到输入序列中的所有其他 token)计算与内存开销是On2。为了缓解这个问题,研究者们提出了 Sliding Window Attention。
2025-05-05 22:48:16
939
原创 pytorch checkpointing
是一种在训练深度神经网络时通过增加计算代价来换取显存优化的技术。它的核心思想是:在反向传播过程中动态重新计算中间激活值(activations),而不是保存所有中间结果。这对于显存受限的场景(如训练大型模型)非常有用。
2025-05-05 14:24:14
383
原创 python hasattr()
是 Python 内置函数之一,用于检查对象是否具有指定名称的属性或方法。如果对象具有指定名称的属性或方法,则返回 True;否则返回 False。
2025-05-04 21:52:21
323
原创 batch normalization和layer normalization区别
Normalization无非就是这样一个操作:其中x是输入数据,维度为(B,T,C),其中B是batchsize,T是序列长度,C是embedding维度;括号内是标准化操作,γ和β是仿射变换参数。
2025-05-03 22:30:05
403
原创 Rotary Positional Embedding
当embedding维度为2时,position的位置每往后一个,就把embedding对应维度旋转θ角度,这就是RoPE的核心思想。问题:理论上讲,位置1,2对应的PE应该在距离上比位置1,500的PE更接近,但APE做不到这一点。的操作是完全一样的(如果去掉Attention Is All You Need中的PE的话)。解决了APE中的问题,但也带来了计算效率低下等问题。而矩阵的第一项,就是把矩阵做一个简单的旋转,这一点我们已经提到过了。矩阵乘法的后两项,就是把二维的embedding映射到。
2025-05-03 20:57:05
835
原创 旋转矩阵公式理解
也就是说,二者在x轴和y轴方向上都有分量。接下来将两个向量分别顺时针旋转。,我们可以将它分解为两个向量。设原始直角坐标系下的坐标为。
2025-05-03 19:38:54
254
原创 多头注意力FLOPs计算
假如矩阵A维度为m*n,矩阵B维度为n*p,那么二者相乘,得到C矩阵m*p,其中每个元素需要计算n次乘法和n-1次加法才能得到。也就是说,在一次矩阵乘法中,FLOPs为。
2025-04-30 16:26:05
232
原创 Precision-Recall曲线
这里和ROC曲线有一点不同:我们的虚线并不是”随机猜“的曲线,而是将所有样本都分为正类的曲线。另外,Precision和Recall都是越大越好。同样地,真实曲线(蓝色曲线)越靠近右上角越好。那么,我们同样可以用AUC来衡量真实分类器曲线的性能,一般分类器的性能同样是0.5到1之间的一个值。
2025-04-26 10:55:00
288
原创 ROC 曲线 和 AUC
而二元分类时输出的是0~1的概率,那么threshold的选取不同,就会导致不同的分类结果。于是,我们分别选取多个不同的threshold,就会得到多个不同的二元组(TPR,FPR),从而绘制出点图。注意,ROC曲线一定会经过(0,0)和(1,1)两点,代表全部分类为负和全部分类为正的结果。也就是说,(TPR,FPR)离(0,1)越近越好。不难观察到,紫色曲线的AUC,也就是在0到1区间上的积分为1,虚线(乱猜)的AUC为0.5,一般分类器的AUC在0.5到1之间。TPR越大越好,FPR越小越好。
2025-04-26 10:33:11
262
原创 怎样记忆Precision、Recall?
现在对所有样本进行预测。其中蓝色圆圈以内预测为正,蓝色圆圈以外预测为负。其中大矩形表示所有样本,左边的矩形表示正样本,右边的矩形表示负样本。FP(False Positive):标签为负,预测为正。FN(False Negative):标签为正,预测为负。TN(True Negative):标签为负,预测为负。TP(True Posive):标签为正,预测为正。Precision:TP在圆形中的比例。Recall:TP在左边矩形中的比例。TP+FP:预测为正的所有样本。TP+FN:标签为正的所有样本。
2025-04-24 22:17:47
323
原创 R-CNN,Fast-R-CNN-Faster-R-CNN个人笔记
注:此博客主要为了方便笔者快速复习,只讲大致框架,只讲推理,不讲训练,因此内容不会很详实。
2025-04-24 20:14:49
695
原创 Grouped Query Attention (GQA) PyTorch实现
一旦读懂了MQA,GQA的实现思路几乎完全一样,只是多用了一个不太常用的函数。关于这个函数,直接点击链接看笔者相关文章就行了,挺好懂的。为了读懂GQA,建议读者了解一下。的实现,这样顺着读下来会更顺手。
2025-04-19 17:38:38
500
原创 tensor.repeat和tensor.repeat_interleave
repeat和都可以用于在张量的某个维度上进行扩展,但适用的场景略有不同。选择哪个函数取决于你想要的复制粒度:块级 还是 行/元素级。
2025-04-19 17:20:52
297
原创 Multi-Query Attention (MQA) PyTorch 实现
和多头注意力机制的唯一区别:K、V在不同的head之间实现了复用,而对于不同的头,Q依然不同。
2025-04-19 10:56:30
325
原创 vscode ctrl+鼠标左键不能跳转
本人怀疑是重装vscode后,1.99版本的python插件残留下来的问题。bug果然可以存在于任何地方QAQ。语句中的包的颜色从之前的青色变成了现在的白色。再用ctrl+左键点击包名试图进行跳转,发现没有任何反应。笔者使用的vscode版本是1.85.2(一周前从1.99降下来的,因为版本过高连不上服务器)。最后在reddit一个小角落发现有人重装了python插件,然后就没问题了。试了一下,果然如此。再试了一下在光标处按下F12,依然不能跳转。,发现自己的设置和帖子一样,于是继续踩坑。
2025-04-08 11:20:51
876
原创 python 字符串 unicode和utf-8的区别,一文看懂!
在不同长度(1、2、3、4)字节的 UTF-8 编码中,每个 unit 的开头通常会有 0 或 1 的标识位。这是因为计算机在处理时,并不能预先知道某个字节是单一 unit 的 UTF-8 编码,还是多字节(双字节、三字节或四字节)的一部分。简短地说:最开始,一个byte(8个bit,可以表示128个不同的符号)就可以表示英文系统里的常见符号,于是就有了ASCII码。它的意思是,处理时以8个bit作为一个单元(unit),同理,UTF-16、32就分别以16、32个bit作为一个单元。
2025-03-15 00:52:24
273
原创 python str repr方法区别
方法的返回值会被预先定义为“含有相关有效信息”的字符串,比如。方法的返回值会被预先为用户友好型字符串,同样是打印,第二种打印方式就明确地表达了。但如果把上述代码中的。
2025-03-12 23:53:28
195
原创 pytorch detach,clone的区别
detach生成原始张量的view而不保留计算图;clone生成的张量附带计算图,计算该张量的梯度时,梯度会回传到原始张量。但clone张量不是原张量的view。另外,可以对clone张量的值进行局部修改,但局部修改以后,梯度更新时,该处的梯度不会回传。
2025-03-08 14:39:51
540
原创 pytorch retain_grad vs requires_grad
requires_grad大家都挺熟悉的,因此穿插在retain_grad的例子里进行捎带讲解就行。属性并不会在反向传播的过程中被自动保存下来(这是为了节省内存,毕竟我们只需要计算那些手动设置。的张量的梯度,并进行梯度更新,对吧?警告的大致意思是:访问了非叶子节点的。的梯度也在反向传播以后被正确保存了!因此,我们只需要添加一行代码。可以看到,现在非叶子节点。属性,但非叶子节点的。
2025-03-08 11:48:39
450
原创 linux软链接使用相对路径的问题
总结:在被链接的文件处,使用绝对路径,就没这么多事;如果使用相对路径,就要确保这个相对路径是相对于软链接文件所在目录的位置而言的,不然就会直接生成无效的软链接。这里的第一个路径如果是绝对路径,就没有任何问题。如果是相对路径,就要确保这个相对路径是相对于。中,查看当前目录结构,有。读者可以自行查看,此时。就是一个无效的软链接。这是因为执行命令时,
2025-02-06 00:58:08
307
原创 We couldn‘t connect to ‘https://huggingface.co‘ huggingface不能连接
可以在代码中设置环境变量。之后就可以正常访问了。
2025-01-24 14:53:50
306
原创 在pc上使用jupyter跑服务器上的代码
将该进程始终在后台进行,这样以后不用打开服务器,直接在本地就能访问服务器的jupyter了。就可以来到jupyter页面了。现在输入你之前设置好的密码,就可以访问你的服务器了。下一步,在服务器上来到你想要作为jupyter根目录的文件夹,使用命令。命令,创建你的jupyter密码。这一步很简单,就不截图了。在红框处看到的端口号8888就是你之后要使用的端口号了。最后,来到本地,在浏览器URL输入。现在ctrl+c退出,使用命令。首先,在服务器上使用。
2024-05-21 13:43:02
406
原创 如何在python中管理windows路径?使用斜杠还是反斜杠?遇到转义字符怎么办?
方法3:使用原始字符串加反斜杠。方法2:使用2个反斜杠。方法1:直接使用斜杠。
2024-05-16 09:30:05
470
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人