- 博客(30)
- 收藏
- 关注
原创 MiniGPT4源码拆解——models
MiniGPT4是以[CLS] token的向量作为整个句子的语义表达来进行NSP任务训练的,所以不像图像处理那样需要找出空间上的显著局部信息,所以不是用常见的max/avg pool,而是使用线性+非线性处理来增强表达能力。一些我看的时候的问题都在注释里。(2)get_intermediate_layers函数(几乎和features_forward一样)(3)根据has_cross_attention判断是否要加cross_attention。换句话说,前向时“放弃缓存”,反向时“重新计算”。
2025-07-10 23:55:33
547
原创 从Debug中学习MiniGPT4
x = self.proj(x).flatten(2).transpose(1, 2)(把图像划分为固定大小的patch(通过设置卷积核和步长大小相等),并把每个patch由三通道嵌入到embed_dim个通道,通过卷积实现)(1,256,1408)里面新学到的参数的意思:num_beams用于控制beam_search的宽度,决定模型每一步保留多少个候选序列(类似于topk中的k),stopping_criteria定义什么时候停止生成过程,除了eos_tojen_id外还能增加更多复杂判断。
2025-07-10 23:44:02
770
原创 CLIP的tokenizer详解
word = tuple(token) + ( '</w>',),这样的话就会把最后一个字符和'</w>'分开,导致无法标志单词结束的位置。因为bs定义时会跳过一些不安全的控制字符,但是又希望bs是从0到255没有空缺,所以在cs中就会用安全的ASCII码之外的字符代替。这里应该好理解,就是给定一个由多个符号(symbol)组成的单词(word),返回它所有相邻符号对的集合。,内容一样,但两个变量。
2025-07-04 12:40:22
331
原创 CLIP模型实现中的其他细节
但autocast只针对模块的外部类型来判断是否进行类型转化(如nn.Linear, nn.Conv2d),但是自定义的模块(类)autocast不会进行类型转换(autocast只是解决了类型不匹配的问题,但是低精度产生的梯度爆炸等问题无法解决,由反向传播时gradscaler解决)logit_scale是缩放因子,定义是self.logit_scale = nn.Parameter(torch.ones([]) * np.log(1 / 0.07))
2025-07-03 21:11:02
724
原创 手动实现ResNet50
还有一个点就是BTNK1中其实是实现了一个残差网络结构,而右边那个conv其实是为了防止C1*4和输入的C1不等而加的。模型其实很简单,主要就是注意padding来确保中间的维度都一样就可以了。
2025-07-01 21:56:39
181
原创 nanoGPT复现——prepare拆解(自己构建词表 VS tiktoken)
在nanoGPT的data文件夹有两个很相似的文件夹结构:shakespeare和shakespeare-char,这两种都是对shakespeare数据集的处理,但是shakespeare使用的是tiktoken对文字进行编码,另一个则是使用自己构建的词表。
2025-07-01 21:51:42
181
原创 nanoGPT复现——bench.py和sample.py
其实bench.py和sample.py是train.py的缩略版,主干是一样的,所以这里就没有把参数给分离出来,只是把代码的每个模块分离出来了,如果不懂参数的用处可以看train.py那一篇,那里更全面bench的主要作用是对模型的各项性能进行检测数据生成model定义compile主干(profile)二、sample.pysample主要是利用定义的模型来生成文本模型定义+compilemeta处理 一般是用 库序列化保存的 Py
2025-07-01 21:31:51
248
原创 复现nanoGPT——train.py(详细版拆解)
原版的train前面有特别多的参数定义,看的人头晕,所以我就把它们系统化的整理出来,分成几个模块,和各自使用部分放在一起,但是事实证明,放在最前面是最好的,因为放在中间可能会涉及到参数调用顺序和覆盖问题。把它们分开只是为了方便理解。
2025-07-01 21:13:18
311
原创 NanoGPT的BenchMarking.py
在传统的编译执行 中,代码在运行 前会被完全编译成机器码,虽然执行效率高,但是编译过程耗时且缺乏灵活性。TensorFloat-32(TF32)是一种混合精度浮点格式,旨在在 NVIDIA 的 Ampere 架构 GPU 上加速矩阵乘法和深度神经网络操作,同时保持与 FP32(单精度浮点数)相当的数值精度。torch.manual_seed(seed)是设置Pytorch在CPU上的随机数 种子,而torch.cuda.manual_seed(seed)是设置在GPU(这里是cuda)上的随机数种子。
2025-05-29 21:17:00
1060
原创 tiktoken学习
S)|\s+""", #分词正则表达式。": 0, b"\"": 1, ...}, # 50,000+ 条目 #存储预加载的分词表。"special_tokens": {"<|endoftext|>": 50256}, #特殊分词。"explicit_n_vocab": 50257 #增加的特殊分词。"name": "gpt2", #Encoding的名称。
2025-05-29 19:50:36
795
原创 nndl-book之循环神经网络
延时神经网络是在前馈网络中的非输出层都添加一个延时器,记录神经元的最近几次活性值.在第 t 个时刻,第 𝑚 层神经元的活性值依赖于第 𝑚− 1 层神经元的最近 𝐿 个时刻的活性值代码(处理kaggle中的tweet评论数据集):data_path = r'F:\比赛-信安杯\Pytorch\data\肿瘤图像\Brain Tumor Data(1)\Brain Tumor Data\Brain Tumor data\Brain Tumor data\Testing'
2025-05-16 16:48:51
893
原创 nndl-book线性模型
线性回归print(f"第{epoch + 1}个loss:{l:f}")在你的代码中,`batch_size` 的大小对 `loss` 的影响主要体现在以下几个方面:### 1. **梯度估计的准确性**- **小批量(如 `batch_size=10`)**:小批量训练的梯度估计包含更多的随机性,这意味着每次更新模型参数时,梯度的方向和大小会受到当前批次样本的较大影响。这种随机性有助于模型跳出局部最优解,找到更全局的最优解。
2025-05-01 21:47:51
610
原创 TransVQA:Transferable Vector Quantization Alignment for Unsupervised Domain Adaptation论文阅读
论文介绍了一个新模型TransVQA,结合了Trans(用于提取更多精确的特征值)、VQA(使用两步对齐来对齐跨域特征并解决域转换问题)、MIMC(约束目标域并提高伪标签的准确性)(1)目前CNN不足:需要收集大量数据,昂贵。且容易受到光、颜色、背景、位置和风格的影响。(2)假设:源领域和目标领域有相同的标签集(3)UDA模型的基础在于提取特征,目前主要的提取特征的方法 是CNN和转换器,而转换器可以在图像中的视觉特征之间建立长距离依赖关系,因此在域内自适应任务中转换器通常优于CNN。
2025-04-24 19:49:19
961
1
原创 多层感知机(9)——实战Kaggle比赛:预测房价
clipped_preds = torch.clamp(net(features), 1, float('inf'))#clamp用于将输入张量的每个元素限制在一个指定的区间内。clipped_preds = torch.clamp(net(features), 1, float('inf'))#clamp用于将输入张量的每个元素限制在一个指定的区间内。# 能够自动调整学习率,适应不同的参数和梯度情况。print(f'折{i + 1},训练log rmse{float(train_ls[-1]):f},'
2025-04-23 19:39:03
697
原创 多层感知机(8)——环境与分布偏移
机器学习的许多应用中都存在类似的问题: 通过将基于模型的决策引入环境,我们可能会破坏模型。例如我们训练了一个贷款申请人违约风险模型,用来预测谁将偿还贷款或违约。这个模型发现申请人的鞋子与违约风险相关(穿牛津鞋申请人会偿还,穿运动鞋申请人会违约)。此后,这个模型可能倾向于向所有穿着牛津鞋的申请人发放贷款,并拒绝所有穿着运动鞋的申请人。一旦模型开始根据鞋类做出决定,顾客就会理解并改变他们的行为。不久,所有的申请者都会穿牛津鞋,而信用度却没有相应的提高。
2025-04-23 14:11:17
708
原创 多层感知机(7)——数值稳定性和模型初始化
初始化方案的选择在神经网络学习中起着举足轻重的作用, 它对保持数值稳定性至关重要。此外,这些初始化方案的选择可以与非线性激活函数的选择有趣的结合在一起。我们选择哪个函数以及如何初始化参数可以决定优化算法收敛的速度有多快。糟糕选择可能会导致我们在训练时遇到梯度爆炸或梯度消失。
2025-04-23 11:34:02
791
原创 多层感知机(6)——前向传播、反向传播和计算图
前向传播是指按顺序计算和存储神经网络中每层的结果。这里的解释大部分我都能看懂,唯一一个之前没有考虑到的就是有一个隐藏层的模型在权重衰减计算L2正则化的时候的公式是。
2025-04-23 10:31:45
373
原创 多重向量机(5)——暂退法
因为我们从表面上看是在训练过程中丢弃(drop out)一些神经元。在整个训练过程的每一次迭代中,标准暂退法包括在计算下一层之前将当前层中的一些节点置零。(unbiased)的方式注入噪声。这样在固定住其他层时,每一层的期望值等于没有噪音时的值。暂退法在前向传播过程中,计算每一内部层的同时注入噪声,这已经成为训练神经网络的常用技术。那么关键的挑战就是如何注入这种噪声。这种方法之所以被称为。
2025-04-22 17:47:21
905
原创 多重向量机(4)——权重衰减
使用𝐿2范数的一个原因是它对权重向量的大分量施加了巨大的惩罚。具体来说,通过计算函数权重向量的某个范数,将它作为惩罚项加入到最小化损失的问题中。print('w的L2范数:', net[0].weight.norm().item())A:为了便于计算,通过平方范式,我们可以去掉平方根,留下权重向量每个分量的平方和。(weight decay)是最广泛使用的正则化的技术之一, 它通常也被称为𝐿2。(weight decay)是最广泛使用的正则化的技术之一, 它通常也被称为𝐿2。在训练参数化机器学习模型时
2025-04-22 14:07:54
536
原创 多层感知机(3)--模型选择、欠拟合和过拟合
将模型在训练数据上拟合的比在潜在分布中更接近的现象称为过拟合(overfitting), 用于对抗过拟合的技术称为正则化。
2025-04-21 20:15:59
615
原创 多层感知机(2)
遇到的问题:关于“module d2l.torch has no attribute train_ch3”的问题,卸载当前d2l,运行pip install d2l==0.17.5(来源:https: // blog.youkuaiyun.com / weixin_50593821 / article / details / 135175676)#nn.Parameter用于把张量转换为parameter。(2)nn.Flatten()不要落下()结果图像与上面的相似,就不再贴了。
2025-04-21 15:51:30
823
原创 多层感知机(1)
这里引用一句古老的谚语,“如果微妙的边界条件很重要,我们很可能是在研究数学而非工程”, 这个观点正好适用于这里。大多数激活函数都是非线性的。由于激活函数是深度学习的基础,下面简要介绍一些常见的激活函数。由于仿射函数的仿射函数仍然是仿射函数,所以还是线性的,为了把线性变非线性,需要增加激活函数𝜎。全连接层(Fully - Connected Layer,简称 FC 层)是指该层中的每个神经元与前一层中的所有神经元都有连接。多层感知机解决的是有些问题不符合线性模型,所以通过增加隐藏层来克服线性模型的限制。
2025-04-21 13:49:20
378
原创 爬虫课设---最终目标:爬取微博数据(1)
f.write(resp.read().decode("utf-8"))#这里需要把字节decode,根据打印信知道使用的编码方式是Utf-8。协议:就是两个计算机之间为了能够流畅的进行沟通而设置的一个君子协定.常见的协议有TCP/IP.SOAP协议,HTTP协议,SMTP协议等等 .....务器传输超文本到本地浏览器的传送协议.直白点儿,就是浏览器和服务器之间的数据交互遵守的就是HTTP协议.2. 各种神奇的莫名其妙的字符串(这个需要经验了,一般都是token字样,防止各种攻击和反爬)
2025-04-17 21:47:34
1477
原创 爬虫课设--关于客户端渲染和服务器渲染的详细介绍+浏览器开发者功能
客户端渲染是指服务器渲染是指通俗来说,就是客户端向服务器请求的时候只是请求到了html框架,而没有具体数据。表现为在网页源代码中没有相应数据。而服务器渲染是在服务器就html和数据结合在一起,发送给客户端。表现为在网页源代码中有相应数据。以豆瓣电影为例:打开网页源代码,搜索“破”可以搜索到《破地狱》(Ctrl+F快捷搜索键)而进入喜剧排行榜中。
2025-04-16 14:04:27
298
原创 线性回归简易实现
trainer = torch.optim.SGD(net.parameters(),lr=0.03)#SGD指随机梯度下降,但实际中通常指小批量随机梯度下降。net = nn.Sequential(nn.Linear(2,1))#Linear(输入形状,输出形状)net[0].bias.data.fill_(0)#初始化神经网络权重和偏置参数。"""停止计时器并将时间记录在列表中""""""返回平均时间""""""返回时间总和""""""返回累计时间""""""启动计时器"""
2025-04-15 22:08:09
842
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人