在自定义数据集上训练 Vision Transformer

问题描述 投票:0回答:0

我正在尝试使用预训练的 ViT pytorch 模型。它在图像大小为 384x384 的 imagenet 上进行了预训练。现在我想在我自己的数据集上微调这个模型。但是每次当我加载预训练的 ViT 模型并尝试对其进行微调时,我都会在 positional_embedding 层上遇到错误。我的图像是 512x512,我不想缩小我的图像。谁能帮我处理代码,我如何在自己的数据集上使用 pretreind ViT 模型。 帮助将不胜感激。

谢谢

下面是加载pytorch预训练模型的代码

from pytorch_pretrained_vit import ViT
model_name = 'B_16_imagenet1k'
model = ViT(model_name, pretrained=True)

以下是加载的模型:

ViT(
  (patch_embedding): Conv2d(3, 768, kernel_size=(16, 16), stride=(16, 16))
  (positional_embedding): PositionalEmbedding1D()
  (transformer): Transformer(
    (blocks): ModuleList(
      (0-11): 12 x Block(
        (attn): MultiHeadedSelfAttention(
          (proj_q): Linear(in_features=768, out_features=768, bias=True)
          (proj_k): Linear(in_features=768, out_features=768, bias=True)
          (proj_v): Linear(in_features=768, out_features=768, bias=True)
          (drop): Dropout(p=0.1, inplace=False)
        )
        (proj): Linear(in_features=768, out_features=768, bias=True)
        (norm1): LayerNorm((768,), eps=1e-06, elementwise_affine=True)
        (pwff): PositionWiseFeedForward(
          (fc1): Linear(in_features=768, out_features=3072, bias=True)
          (fc2): Linear(in_features=3072, out_features=768, bias=True)
        )
        (norm2): LayerNorm((768,), eps=1e-06, elementwise_affine=True)
        (drop): Dropout(p=0.1, inplace=False)
      )
    )
  )
  (norm): LayerNorm((768,), eps=1e-06, elementwise_affine=True)
  (fc): Linear(in_features=768, out_features=1000, bias=True)
)
deep-learning computer-vision huggingface-transformers image-classification
© www.soinside.com 2019 - 2024. All rights reserved.