2025.7.8学习日记【今天内容比较少】
1.任务清单讲解
1.1 添加Class_Token
Class_Token的添加可以使用类来实现,创建ClassToken.py模块,并将如下代码写入模块中。
import torch
import torch.nn as nn
class ClassToken(nn.Module):
""" 添加可学习的class token """
def __init__(self, embed_dim):
super().__init__()
# 创建可学习的参数: [1, 1, embed_dim]
self.cls_token = nn.Parameter(torch.zeros(1, 1, embed_dim))
nn.init.normal_(self.cls_token, std=0.02) # 使用正态分布初始化
def forward(self, x):
# x 形状: [B, n_patches, embed_dim]
# 扩展cls_token到batch中所有样本: [B, 1, embed_dim]
cls_tokens = self.cls_token.expand(x.shape[0], -1, -1)
# 在patch序列前添加class token: [B, n_patches+1, embed_dim]
x = torch.cat([cls_tokens, x], dim=1)
return x
而后在主模型中创建class_token与classifier_head(使用mlp),从而搭建建议的ViT
2.VGGT解读
2.1 聚合器Aggregator
聚合器中用于PatchEmbed的类型一共有两种,分别为卷积conv和vit,在使用conv类型时,会导入作者使用的Conv,在使用DinoVit会使用
3.任务清单
- [√]:完成聚合器装饰器的编写,完成新功能的添加
- [×]:解读SAM2的训练代码
- [√]:关注下VGGT的训练代码,vggt已经与7.6号发布训练代码
一个模型出现后,围绕其所作的工作是否能顺利开展,关键在于作者是否发布训练代码

浙公网安备 33010602011771号