我正在尝试使用预训练的 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)
)