unilm BEiT3预训练参数找不到,或者输入尺寸与模型不匹配?

jv4diomz  于 23天前  发布在  其他
关注(0)|答案(1)|浏览(19)

我正在尝试根据预训练参数微调BEiT3ForVQAV2模型。
我从这个链接下载了预训练参数:
https://conversationhub.blob.core.windows.net/beit-share-public/beit3/pretraining/beit3_base_patch16_224.pth?sv=2021-10-04&st=2023-06-08T11%3A16%3A02Z&se=2033-06-09T11%3A16%3A00Z&sr=c&sp=r&sig=N4pfCVmSeq4L4tS8QbrFVsX6f6q844eft8xSuXdxU48%3D
根据README,我使用以下超参数训练模型:

-- model beit3_base_patch16_480
-- input_size 480
-- finetune ./beit3_base_patch16_224.zip

是的,我将 finetune 设置为 ./beit3_base_patch16_224.zip ,而不是 ./beit3_base_patch16_224.pth 。因为下载的文件是一个.zip文件,解压缩后没有.pth文件。
我运行了代码,但得到了:

RuntimeError: "compute_indices_weights_cubic" not implemented for 'Half'

我认为原因是 input_size 没有与预训练参数匹配。所以我更改了值:

-- model beit3_base_patch16_224
-- input_size 224
-- finetune ./beit3_base_patch16_224.zip

没有问题,代码成功运行。但是模型的性能很差,vqa得分为0.67(来自论文的77.65)
我相信除了将input_size设置为224之外,我没有对代码或数据集做任何更改。
所以我通过这个链接重新下载了预训练参数:
https://conversationhub.blob.core.windows.net/beit-share-public/beit3/vqa/beit3_base_patch16_480_vqa.pth?sv=2021-10-04&st=2023-06-08T11%3A16%3A02Z&se=2033-06-09T11%3A16%3A00Z&sr=c&sp=r&sig=N4pfCVmSeq4L4tS8QbrFVsX6f6q844eft8xSuXdxU48%3D
并使用以下代码运行:

-- model beit3_base_patch16_480
-- input_size 480
-- finetune ./beit3_base_patch16_480_vqa.zip

但这次出现了:
RuntimeError: Error(s) in loading state_dict for BEiTForVisualQuestionAnswering:
size mismatch for beit3.encoder.embed_positions.A.weight: coping a param with shape torch.Size([199, 768]) from checkpoint, the shape in current model is torch.Size([903, 768])
我在想是否下载了错误的预训练参数文件。

相关问题