- 博客(4)
- 收藏
- 关注
原创 CLIP代码复现日志(4):Transformer组件
初始化了一个resblocks,通过ResidualAttentionBlock也就是上方定义的方法来创建了layers个该模块并通过nn.Sequential封装为一个序列,用于保证按顺序执行。将x传入作为注意力计算中的k,q,v进行自注意力计算,同时attn方法返回一个元组,第一个元素为输出张量,第二个元素返回偏置,因此处令bias = False,故返回元组的第一个元素即可。最后定义前向传播,将输入x分别经过归一化层、自注意力层、归一化层和多层感知机MLP。定义了一个注意力机制函数和前向传播函数,
2024-12-20 23:28:05
2049
原创 CLIP代码复现日志(3):图形编码器用的魔改resnet
聚合特征时更加灵活,能够捕捉更复杂的特征关系,并且还可以考虑到全局和位置等额外信息,加强特征聚合,提高模型泛化性。使用_make_layers方法创建4个大的残差模块,并且除了第一个残差模块外其他模块的步长都为2,持续进行下采样不断提高感受野并保留最重要的图片特征信息。最后定义前向传播,这里值得注意的就是最后并没有使用全连接层来进行特征融合,而是引入了多头自注意力池化层来使用吗K,Q,V,至此,这个魔改过的resnet也理解完毕,顺带复习了下这个经典结构的代码实现,对于现在的我还是一个不小的工程啊。
2024-12-19 00:57:57
1717
原创 C++关于new/delete堆空间报错的一类问题及解法方法
6. 重载 “<” 和 “>” 运算符,以便可以按字典顺序比较两个 “my_str” 对象,例如 (“abcd” > “abbe”) 为 true。7. 重载 “<<” 运算符,以便可以直接输出 “my_str” 对象,而不是使用 “object.property” 形式。8. 重载 “+” 运算符,以便两个 “my_str” 对象可以连接在一起,例如 “ab” + “cd” 等于 “abcd”。2. “my_str” 有两个属性,一个 “char*” 表示字符串,一个 “int” 表示字符串的长度。
2024-12-18 21:39:04
398
原创 CLIP 代码复现日志(2)
是 PyTorch 中的一个类,它将一个张量包装成一个参数,这样它就可以在模型训练过程中被优化,经过这样后这个位置编码是可以学习的,梯度下降算法会根据损失函数对这个位置编码进行调整,以找到最优解。在这段代码中,先将维度为N(批次)*C(通道数)*H(图片高度)*W(图片宽度)的图片从二个维度之后开始展平为transformer需要的维度,并对展平后的向量再重新排序,最终实现。将位置编码扩展到一个新的维度,从(HW+1,embed_dim)变为(HW+1,1,embed_dim),以便它可以被广播到。
2024-12-17 23:48:02
1088
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅