zjunlp / MKG_Analogy

[ICLR 2023] Multimodal Analogical Reasoning over Knowledge Graphs
https://zjunlp.github.io/project/MKG_Analogy/
MIT License
99 stars 11 forks source link

微调报错 #25

Closed wzl0422 closed 3 months ago

wzl0422 commented 3 months ago

作者您好,我预训练完以后,再尝试运行微调的bash scripts/run_finetune_mkgformer.sh这个,报出了下面的错误,说是没有找到检查点文件:'pre_train_checkpoint_of_mkgformer',这个是什么问题呢? (MKG) root@autodl-container-bd79408a8f-a7ad41d7:~/autodl-tmp/project/MKG_Analogy-main/MarT# python main.py --gpus "0," --max_epochs=15 --num_workers=4 --model_name_or_path bert-base-uncased --visual_model_path openai/clip-vit-base-patch32 --accumulate_grad_batches 1 --model_class MKGformerKGC --batch_size 32 --pretrain 0 --bce 0 --check_val_every_n_epoch 1 --overwrite_cache --data_dir dataset/MARS --pretrain_path dataset/MarKG --eval_batch_size 128 --max_seq_length 128 --lr 5e-5 --alpha 0.43 --checkpoint pre_train_checkpoint_of_mkgformer

Traceback (most recent call last): File "main.py", line 167, in main() File "main.py", line 134, in main lit_model.load_state_dict(torch.load(args.checkpoint, map_location="cuda")["state_dict"], strict=False) File "/root/miniconda3/envs/MKG/lib/python3.8/site-packages/torch/serialization.py", line 699, in load with _open_file_like(f, 'rb') as opened_file: File "/root/miniconda3/envs/MKG/lib/python3.8/site-packages/torch/serialization.py", line 231, in _open_file_like return _open_file(name_or_buffer, mode) File "/root/miniconda3/envs/MKG/lib/python3.8/site-packages/torch/serialization.py", line 212, in init super(_open_file, self).init(open(name, mode)) FileNotFoundError: [Errno 2] No such file or directory: 'pre_train_checkpoint_of_mkgformer'

然后我看预训练完以后目录里面多了一个output文件夹,里面有:

1

在epoch25下面有一个.ckpt文件,我不明白为什么训练到epoch29,但是这里面只有到25,是因为25是最佳的了吗?然后这个.ckpt是上面所找的那个检查点文件吗?那要把这个文件挪到MarT目录下把名字改成pre_train_checkpoint_of_mkgformer吗?求解!谢谢!

flow3rdown commented 3 months ago

只保存了25个epoch是因为设置了earlystop,你可以根据训练日志找到最佳epoch,将--checkpoint设置为最佳epoch中的ckpt文件

wzl0422 commented 3 months ago

只保存了25个epoch是因为设置了earlystop,你可以根据训练日志找到最佳epoch,将--checkpoint设置为最佳epoch中的ckpt文件

您说的这个--checkpoint 设置为最佳epoch中的ckpt文件,具体是指什么呢,很抱歉我没太理解。意思是比如下图这个里面这个最佳的epoch25下的那个.ckpt文件就是‘pre_train_checkpoint_of_mkgformer’这个吗?只不过要把这个名字改为epoch25下的那个.ckpt文件名字?我理解的正确吗,如果理解有误,还希望得到指正。非常感谢!如果是的话需要怎么改呢?提示报错的是lit_model.load_state_dict(torch.load(args.checkpoint, map_location="cuda")["state_dict"], strict=False)这句代码。

1

其次下图这个结果是正常预期之中吗,相比论文中的结果点数都低了一些。

image
flow3rdown commented 3 months ago

您好,--checkpoint的设置就是您理解的那样。微调结果比论文结果低了不少,可以尝试调调参,参考 #20, #8,#9

wzl0422 commented 3 months ago

您好,--checkpoint的设置就是您理解的那样。微调结果比论文结果低了不少,可以尝试调调参,参考 #20, #8,#9

明白了,非常感谢得到回复!祝顺利!