- 博客(100)
- 收藏
- 关注
原创 DDIM(Diffusion)个人总结
为了解决降噪时,DDPM一次只能预测一个时间步,提出了DDIM,达到一次跨越多个时间步的目的。的取值,在二者之间自由切换,从而实现少步数采样、速度更快且图像质量接近 DDPM的效果。DDIM 通过控制该方差项。
2025-10-23 21:00:05
397
原创 DDPM(Diffusion)个人总结
注:这是笔者自己的笔记,主要供复习使用,因此比较粗糙,详细过程请移步其余优秀博客。我们的U-net输出的噪声就是此处公式中的噪声。是未知的,就需要进行预测。(以下为推理时的公式)是加噪的步数,是预先定义的;注意,这里可不是直接可以推理得到最终生成图片。公式上当然是的,但效果会很差。,有了这样的模型,我们就可以一步步,由。是已知的原图,可以直接使用。随机采样,就可以得到预测的。根据贝叶斯公式,推导出。
2025-10-22 20:02:33
356
原创 卷积公式记忆
那么,对于长度为L的向量,假设kernel size为K,那么如果stride为1,kernel可以在这个向量上滑动L-K次,对吧?于是当stride为S时,kernel可以滑动的次数就是⌊(L-K) / S⌋, 再加上kernel左端与向量左端对齐时的情况,输出大小就是⌊(L-K) / S⌋ + 1。首先,公式中的padding可以不用记忆,padding与否,不影响公式的逻辑,对吧?这里讲一下自己的记忆方法,供大家参考。
2025-10-10 14:39:24
101
原创 RCNN系列边界框回归损失函数
但就像神经网络中的各种normalization一样,如果能够保证dx稳定在-1到1之间,训练效果就会更好,因此就用这个归一化后的值乘以Pw,就变成公式(1)了。笔者一开始有点认不出这个公式是怎么来的,但是细想一下,也比较自然。1.实现尺度不敏感(Scale-Invariant)的回归。候选框x坐标+回归值=预测值,是不是更自然?以上4个公式是RCNN论文附录C中的。2.保证预测的宽高为正值。
2025-09-26 14:04:57
595
原创 vscode terminal远程连接linux服务器GUI图形界面
看了很多教程,不清楚具体原理,但总之自己是摸索出来了:每一步的配置如下:vscode中按下“ctrl+shift+p”,然后输入“Remote-SSH: Open SSH Configuration File“,选择,修改自己的配置(重点是这2行yes):笔者在win11的mobaxterm上连接到服务器,输入xeyes发现图像可以正常显示,但是vscode terminal中就不行。于是在mobaxterm terminal输入,显示,而vscode terminal中什么也不显示,于是在vscode
2025-08-30 21:49:09
380
原创 使用FPN进行语义分割,最小可行性demo
笔者发现还是得多看代码,看论文是不明白很多细节的。比如,看了这个代码之后才知道,FPN特指对backbone(res50)进行特征提取的那一部分网络,而不是“res50+FPN=backbone”。的输入是FPN的四个多尺度特征。
2025-07-28 14:58:57
269
原创 windows切换中英输入法时,必须连按两下shift键才行【解决方案】
这里以win11为例,在搜索栏搜索“粘滞”,然后将红框中的按键关闭即可。
2025-07-16 10:22:46
820
1
原创 Visual Prompt Tuning核心思路讲解(个人总结)
VPT的核心思想是,在适配下游任务时,我们应当冻结 (freeze) 强大的预训练模型本身,只通过训练一小组额外添加的、轻量级的来引导模型的行为。这很容易理解,想想GPT:为什么一个Transformer Decoder能做这么多事?就是因为对于不同的任务,我们会喂给模型不同的prompt麻。
2025-07-15 11:49:55
472
原创 Swin Transformer核心思路讲解(个人总结)
Swin Transformer 的 patch merging 模块使得特征逐步在层级上聚合,构建更丰富的语义层次;而 Swin Transformer block 则在显著降低计算开销的同时,尽量保持不同区域间的有效信息交流。二者共同协作,实现了在计算效率和全局表达能力之间的良好平衡。这里只总结了个人觉得核心的点,具体讲解请参考这里。
2025-07-12 10:39:54
355
原创 vit如何由patch得到embedding
这是最关键的一步,它让卷积核在计算完一个Patch后,直接“跳”到下一个不重叠的Patch上。卷积核数量 (Kernel Count): 设为 768。这决定了每个Patch最终生成的嵌入向量维度。个图像块 (Patch) 的嵌入向量。这个原理的核心,是巧妙地利用单次卷积操作,同时实现“切块”和“特征提取”两个任务。的卷积核以16的步长滑过整个图像时,其输出就是一个。这确保了卷积核的“视野”恰好覆盖一整个Patch。Patch的嵌入表示 (Embedding)。的RGB图像,我们的目标是得到。
2025-07-03 18:41:35
425
原创 关于windows中5070ti显卡不被torch支持的问题
(推荐运行cmd时以管理员权限运行,不然执行上述pip命令时,可能会遇到**[WinError 5]拒绝访问**这个错误。新买了5070ti,发现sm120无法被sbale版本的pytorch支持。解决途径也比较简单,和。4.复制这个包的本地地址为【本地地址】,在你的新环境中。1.conda创建python=3.9的新环境。说法基本一致,个人总结为如下三点。
2025-06-19 12:01:08
707
原创 NNLM和word2vec的区别
将前N个词的embedding拼接起来得到向量,将该向量首先通过一个隐藏层,再映射到大小为V的线性层,进行预测即可。而word2vecz则去掉了隐藏层。此外,CBOW不再采用拼接的方式,而将N个词的embedding直接进行相加。
2025-06-04 18:23:18
204
原创 关于词向量的思考
最近刚学习。NNLM网络在训练过程中为每个单词生成了一个词向量,但从表示每个单词语义信息的的角度来说,生成质量不佳,于是有了后来的word2vec,转么学习高质量的词向量表示。.4f.4f可以发现,word2vec网络更简洁了。
2025-05-15 18:56:27
287
原创 pytorch nn.RNN demo
可以看到,nn.RNN默认会输出两个张量:一个是最后一个时间步的所有层,一个是最后一层的所有时间步。它是不会输出“所有时间步的所有层”的。
2025-05-15 17:13:12
375
原创 pytorch RNNCell
可以看到,每一次把输入送入RNNCell的过程,就是把输入部分和隐藏状态部分分别经过简单全连接层,并接上激活函数的过程。pytorch RNNCell的一次前馈本质上就是一个线性层。
2025-05-15 00:58:29
308
原创 NNLM神经网络语言模型总结
一开始还以为很复杂,总结一下就是:NNLM 将某个单词前 n−1 个词各自转为 embedding,拼接成一个 (n−1)⋅d 维的向量,再通过隐藏层 + 输出层 + softmax,预测下一个词的概率分布可以发现,这个2003年提出的模型在架构上和GPT,都是用之前的文字预测下一个文字;都是用之前文字的embedding经过一个特殊层(前者是FFN,后者是transformer decoder)来得到一个词表向量,根据向量的分量大小选择某个单词。
2025-05-14 17:26:38
367
原创 【bag of n-grams】 N-gram词袋模型 简介
Bag of n-grams是Bag of Words的扩展,它的核心思想是:忽略语序,只统计各个 N-gram 在文本中出现的次数或是否出现。
2025-05-13 20:39:37
402
原创 Sliding Window Attention(Longformer)
最简单的自注意力大家肯定都会啦。但这种全连接的自注意力(即每个 token 需要 attend 到输入序列中的所有其他 token)计算与内存开销是On2。为了缓解这个问题,研究者们提出了 Sliding Window Attention。
2025-05-05 22:48:16
1092
原创 pytorch checkpointing
是一种在训练深度神经网络时通过增加计算代价来换取显存优化的技术。它的核心思想是:在反向传播过程中动态重新计算中间激活值(activations),而不是保存所有中间结果。这对于显存受限的场景(如训练大型模型)非常有用。
2025-05-05 14:24:14
440
原创 python hasattr()
是 Python 内置函数之一,用于检查对象是否具有指定名称的属性或方法。如果对象具有指定名称的属性或方法,则返回 True;否则返回 False。
2025-05-04 21:52:21
348
原创 batch normalization和layer normalization区别
Normalization无非就是这样一个操作:其中x是输入数据,维度为(B,T,C),其中B是batchsize,T是序列长度,C是embedding维度;括号内是标准化操作,γ和β是仿射变换参数。
2025-05-03 22:30:05
445
原创 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
943
原创 旋转矩阵公式理解
也就是说,二者在x轴和y轴方向上都有分量。接下来将两个向量分别顺时针旋转。,我们可以将它分解为两个向量。设原始直角坐标系下的坐标为。
2025-05-03 19:38:54
336
原创 多头注意力FLOPs计算
假如矩阵A维度为m*n,矩阵B维度为n*p,那么二者相乘,得到C矩阵m*p,其中每个元素需要计算n次乘法和n-1次加法才能得到。也就是说,在一次矩阵乘法中,FLOPs为。
2025-04-30 16:26:05
311
原创 Precision-Recall曲线
这里和ROC曲线有一点不同:我们的虚线并不是”随机猜“的曲线,而是将所有样本都分为正类的曲线。另外,Precision和Recall都是越大越好。同样地,真实曲线(蓝色曲线)越靠近右上角越好。那么,我们同样可以用AUC来衡量真实分类器曲线的性能,一般分类器的性能同样是0.5到1之间的一个值。
2025-04-26 10:55:00
354
原创 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
294
原创 怎样记忆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
372
原创 R-CNN,Fast-R-CNN-Faster-R-CNN个人笔记
注:此博客主要为了方便笔者快速复习,只讲大致框架,只讲推理,不讲训练,因此内容不会很详实。
2025-04-24 20:14:49
723
原创 Grouped Query Attention (GQA) PyTorch实现
一旦读懂了MQA,GQA的实现思路几乎完全一样,只是多用了一个不太常用的函数。关于这个函数,直接点击链接看笔者相关文章就行了,挺好懂的。为了读懂GQA,建议读者了解一下。的实现,这样顺着读下来会更顺手。
2025-04-19 17:38:38
643
原创 tensor.repeat和tensor.repeat_interleave
repeat和都可以用于在张量的某个维度上进行扩展,但适用的场景略有不同。选择哪个函数取决于你想要的复制粒度:块级 还是 行/元素级。
2025-04-19 17:20:52
370
原创 Multi-Query Attention (MQA) PyTorch 实现
和多头注意力机制的唯一区别:K、V在不同的head之间实现了复用,而对于不同的头,Q依然不同。
2025-04-19 10:56:30
408
原创 vscode ctrl+鼠标左键不能跳转
本人怀疑是重装vscode后,1.99版本的python插件残留下来的问题。bug果然可以存在于任何地方QAQ。语句中的包的颜色从之前的青色变成了现在的白色。再用ctrl+左键点击包名试图进行跳转,发现没有任何反应。笔者使用的vscode版本是1.85.2(一周前从1.99降下来的,因为版本过高连不上服务器)。最后在reddit一个小角落发现有人重装了python插件,然后就没问题了。试了一下,果然如此。再试了一下在光标处按下F12,依然不能跳转。,发现自己的设置和帖子一样,于是继续踩坑。
2025-04-08 11:20:51
1174
原创 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
318
原创 python str repr方法区别
方法的返回值会被预先定义为“含有相关有效信息”的字符串,比如。方法的返回值会被预先为用户友好型字符串,同样是打印,第二种打印方式就明确地表达了。但如果把上述代码中的。
2025-03-12 23:53:28
219
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅