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号发布训练代码

一个模型出现后,围绕其所作的工作是否能顺利开展,关键在于作者是否发布训练代码

posted @ 2025-07-08 22:13  BingUw  阅读(27)  评论(0)    收藏  举报