WissingChen/VLCI

训练文件的运行结果

Closed this issue · 16 comments

非常抱歉打扰你,请问运行训练文件是通过python main.py -c config/vlp.json指令来运行吗?我运行的结果为什么是负无穷呢?
epoch: 30 32/33 lv: 0.146 lt: 0.670
Epoch 30 mean_loss: 0.1476 0.7979 time: 22.8444s
Saving checkpoint: results/pretrain/current_checkpoint.pth ...
Best results (w.r.t BLEU_4) in validation set:
val_BLEU_4 : -inf
Best results (w.r.t BLEU_4) in test set:
test_BLEU_4 : -inf
希望你能抽空回答我的问题,非常感激!

你好,我想要从头训练这个网络,请问可以提供相关的代码吗?谢谢!

好的,谢谢!是不是先通过python main.py -c config/vlp.json指令来进行预训练,然后再用python main.py -c config/iu_xray/vlci.json进行微调就可以了?最终的结果是由python main.py -c config/iu_xray/vlci.json这个命令得到的

您好,我们通过微调得不到相关分数,可以帮忙看看我们的操作有没问题吗?
1.python main.py -c config/vlp.json指令来进行预训练
2.python main.py -c config/iu_xray/vlci.json进行微调
我们没有改动vlci.json的参数,是有什么操作我们遗漏了吗?
希望你能抽空回答我的问题,非常感激!

你好,请问为什么我重新从github上拉取了你的代码,并且用了你提供的best_model的pth文件,但是我进行inference的时候他报了以下的错误:
Traceback (most recent call last):
File "main.py", line 105, in
main()
File "main.py", line 100, in main
trainer.inference()
File "/home/lhx/lyj/VLCI/trainer/BaseTrainer.py", line 186, in inference
self.model.load_state_dict(pretrained_dict, False)
File "/home/lhx/anaconda3/envs/vlci/lib/python3.7/site-packages/torch/nn/modules/module.py", line 1672, in load_state_dict
self.class.name, "\n\t".join(error_msgs)))
RuntimeError: Error(s) in loading state_dict for VLCI:
size mismatch for text_embed.embed.lut.weight: copying a param with shape torch.Size([4348, 512]) from checkpoint, the shape in current model is torch.Size([761, 512]).
size mismatch for logit.weight: copying a param with shape torch.Size([4348, 512]) from checkpoint, the shape in current model is torch.Size([761, 512]).
size mismatch for logit.bias: copying a param with shape torch.Size([4348]) from checkpoint, the shape in current model is torch.Size([761]).
非常感谢你之前给我提供的帮助,能否麻烦你抽空回答一下我的这个问题,非常感谢!

你好,请问为什么我重新从github上拉取了你的代码,并且用了你提供的best_model的pth文件,但是我进行inference的时候他报了以下的错误: Traceback (most recent call last): File "main.py", line 105, in main() File "main.py", line 100, in main trainer.inference() File "/home/lhx/lyj/VLCI/trainer/BaseTrainer.py", line 186, in inference self.model.load_state_dict(pretrained_dict, False) File "/home/lhx/anaconda3/envs/vlci/lib/python3.7/site-packages/torch/nn/modules/module.py", line 1672, in load_state_dict self.class.name, "\n\t".join(error_msgs))) RuntimeError: Error(s) in loading state_dict for VLCI: size mismatch for text_embed.embed.lut.weight: copying a param with shape torch.Size([4348, 512]) from checkpoint, the shape in current model is torch.Size([761, 512]). size mismatch for logit.weight: copying a param with shape torch.Size([4348, 512]) from checkpoint, the shape in current model is torch.Size([761, 512]). size mismatch for logit.bias: copying a param with shape torch.Size([4348]) from checkpoint, the shape in current model is torch.Size([761]). 非常感谢你之前给我提供的帮助,能否麻烦你抽空回答一下我的这个问题,非常感谢!

tokenizer是两个数据集合并起来的,761是只用了IU-Xray

您好,我们发现seed会影响finetune阶段的结果,并且影响程度还不小,iu-xray数据集在finetune的时候,源代码里面seed=-1,每次seed都不一样,可以告知相关seed参数如何选择吗?mimic-cxr的情况也是如此,期待您的回复,打扰了,谢谢!!!

------------------ 原始邮件 ------------------ 发件人: "Jiahong Chen" @.>; 发送时间: 2024年1月15日(星期一) 晚上6:49 @.>; 主题: 回复: [WissingChen/VLCI] 训练文件的运行结果 (Issue #8) 您好,我们按照github代码上vlp.json和iu_xray/vlci.json的参数进行训练,得到的iu分数如下,效果不是很理想,是有步骤或参数需要额外调整吗? 期待您的回复,万分感谢!
------------------ 原始邮件 ------------------ 发件人: "WissingChen/VLCI" @.>; 发送时间: 2024年1月3日(星期三) 下午4:23 @.>; 抄送: "Jiahong @.@.>; 主题: Re: [WissingChen/VLCI] 训练文件的运行结果 (Issue #8) 你好,可以提供更多信息吗?你得到的score是多少?微调的时候,是否更改了对应的参数,比如需要加载的预训练模型的路径 ThatNight @.> 于2024年1月2日周二 21:15写道: > 您好,我们通过微调得不到相关分数,可以帮忙看看我们的操作有没问题吗? > 1.python main.py -c config/vlp.json指令来进行预训练 > 2.python main.py -c config/iu_xray/vlci.json进行微调 > 我们没有改动vlci.json的参数,是有什么操作我们遗漏了吗? > 希望你能抽空回答我的问题,非常感激! > > — > Reply to this email directly, view it on GitHub > <#8 (comment)>, > or unsubscribe > <https://github.com/notifications/unsubscribe-auth/AHQFUTJUGE4FJ5FF6UFS5M3YMQB7BAVCNFSM6AAAAABAP34RA2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQNZUGAYTEOBYGI> > . > You are receiving this because you commented.Message ID: > @.> > — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

抱歉,我也忘了😂。不过提供的权重文件里面有保存了seed,你可以查看一下。

@WissingChen 你好,我想请问一下,我是用您的代码直接从头开始进行训练,也就是运行vlp代码,为什么效果差距非常大呢?当我按照您的设置,也就是epoch=30时运行VLP后运行VLCI调试,得到的结果是'task_name': 'funtune_vlci_iuxray', 'val_BLEU_1': 0.19273648648647562, 'val_BLEU_2': 0.11584489358864569, 'val_BLEU_3': 0.07478180712054772, 'val_BLEU_4': 0.04907488487979382, 'val_METEOR': 0.11525291149451279, 'val_ROUGE_L': 0.20281154186456962, 'val_CIDEr': 0.012362936711102076, 'test_BLEU_1': 0.18703389830507947, 'test_BLEU_2': 0.11172047054206749, 'test_BLEU_3': 0.07152021533832363, 'test_BLEU_4': 0.046315353705533004, 'test_METEOR': 0.11908411039487438, 'test_ROUGE_L': 0.20728225121827204, 'test_CIDEr': 0.008178373044939216
当epoch设置为3时运行VLP后运行VLCI调试,得到的结果是'task_name': 'funtune_vlci_iuxray', 'val_BLEU_1': 0.15844594594593703, 'val_BLEU_2': 0.09769595315747928, 'val_BLEU_3': 0.06769488908887132, 'val_BLEU_4': 0.04499885723788385, 'val_METEOR': 0.08562511309131719, 'val_ROUGE_L': 0.17928822424214896, 'val_CIDEr': 0.004288442979948751, 'test_BLEU_1': 0.14980225988700144, 'test_BLEU_2': 0.09051918663595139, 'test_BLEU_3': 0.06190964471599331, 'test_BLEU_4': 0.04098755522110162, 'test_METEOR': 0.08712998730000078, 'test_ROUGE_L': 0.1753880464614055, 'test_CIDEr': 0.003838727643715385
当epoch设置为50时运行VLP后运行VLCI调试,得到的结果是'task_name': 'funtune_vlci_iuxray', 'val_BLEU_1': 0.21599099099097882, 'val_BLEU_2': 0.13026358097743915, 'val_BLEU_3': 0.08283198238184786, 'val_BLEU_4': 0.051754938949532224, 'val_METEOR': 0.13156715992050624, 'val_ROUGE_L': 0.21576720033731683, 'val_CIDEr': 0.012694717519345066, 'test_BLEU_1': 0.21372881355931603, 'test_BLEU_2': 0.1320268379669349, 'test_BLEU_3': 0.0860990785005599, 'test_BLEU_4': 0.05467922965958857, 'test_METEOR': 0.143411022276213, 'test_ROUGE_L': 0.22928949638465168, 'test_CIDEr': 0.011025840656955}
当epoch设置为1000时运行VLP后运行VLCI调试,得到的结果是'task_name': 'funtune_vlci_iuxray', 'val_BLEU_1': 0.14650900900900077, 'val_BLEU_2': 0.0816151071726366, 'val_BLEU_3': 0.04672963456753538, 'val_BLEU_4': 0.027531732941423206, 'val_METEOR': 0.08618845252359614, 'val_ROUGE_L': 0.15361920447252392, 'val_CIDEr': 0.006370328413021705, 'test_BLEU_1': 0.14324858757061742, 'test_BLEU_2': 0.08017402319676753, 'test_BLEU_3': 0.04620073495692402, 'test_BLEU_4': 0.026453556255121035, 'test_METEOR': 0.09013762088001674, 'test_ROUGE_L': 0.15556650681032416, 'test_CIDEr': 0.005313143845163627}
我想知道为什么无论我如何设置epoch都没有办法通过VLP从头训练出你的结果呢?请问这是epoch的原因还是显卡的原因或者您设置了其他什么超参数呢?能否麻烦您抽空回答一下我的这个问题,非常感谢!!!

@WissingChen 你好,我想请问一下,我是用您的代码直接从头开始进行训练,也就是运行vlp代码,为什么效果差距非常大呢?当我按照您的设置,也就是epoch=30时运行VLP后运行VLCI调试,得到的结果是'task_name': 'funtune_vlci_iuxray', 'val_BLEU_1': 0.19273648648647562, 'val_BLEU_2': 0.11584489358864569, 'val_BLEU_3': 0.07478180712054772, 'val_BLEU_4': 0.04907488487979382, 'val_METEOR': 0.11525291149451279, 'val_ROUGE_L': 0.20281154186456962, 'val_CIDEr': 0.012362936711102076, 'test_BLEU_1': 0.18703389830507947, 'test_BLEU_2': 0.11172047054206749, 'test_BLEU_3': 0.07152021533832363, 'test_BLEU_4': 0.046315353705533004, 'test_METEOR': 0.11908411039487438, 'test_ROUGE_L': 0.20728225121827204, 'test_CIDEr': 0.008178373044939216 当epoch设置为3时运行VLP后运行VLCI调试,得到的结果是'task_name': 'funtune_vlci_iuxray', 'val_BLEU_1': 0.15844594594593703, 'val_BLEU_2': 0.09769595315747928, 'val_BLEU_3': 0.06769488908887132, 'val_BLEU_4': 0.04499885723788385, 'val_METEOR': 0.08562511309131719, 'val_ROUGE_L': 0.17928822424214896, 'val_CIDEr': 0.004288442979948751, 'test_BLEU_1': 0.14980225988700144, 'test_BLEU_2': 0.09051918663595139, 'test_BLEU_3': 0.06190964471599331, 'test_BLEU_4': 0.04098755522110162, 'test_METEOR': 0.08712998730000078, 'test_ROUGE_L': 0.1753880464614055, 'test_CIDEr': 0.003838727643715385 当epoch设置为50时运行VLP后运行VLCI调试,得到的结果是'task_name': 'funtune_vlci_iuxray', 'val_BLEU_1': 0.21599099099097882, 'val_BLEU_2': 0.13026358097743915, 'val_BLEU_3': 0.08283198238184786, 'val_BLEU_4': 0.051754938949532224, 'val_METEOR': 0.13156715992050624, 'val_ROUGE_L': 0.21576720033731683, 'val_CIDEr': 0.012694717519345066, 'test_BLEU_1': 0.21372881355931603, 'test_BLEU_2': 0.1320268379669349, 'test_BLEU_3': 0.0860990785005599, 'test_BLEU_4': 0.05467922965958857, 'test_METEOR': 0.143411022276213, 'test_ROUGE_L': 0.22928949638465168, 'test_CIDEr': 0.011025840656955} 当epoch设置为1000时运行VLP后运行VLCI调试,得到的结果是'task_name': 'funtune_vlci_iuxray', 'val_BLEU_1': 0.14650900900900077, 'val_BLEU_2': 0.0816151071726366, 'val_BLEU_3': 0.04672963456753538, 'val_BLEU_4': 0.027531732941423206, 'val_METEOR': 0.08618845252359614, 'val_ROUGE_L': 0.15361920447252392, 'val_CIDEr': 0.006370328413021705, 'test_BLEU_1': 0.14324858757061742, 'test_BLEU_2': 0.08017402319676753, 'test_BLEU_3': 0.04620073495692402, 'test_BLEU_4': 0.026453556255121035, 'test_METEOR': 0.09013762088001674, 'test_ROUGE_L': 0.15556650681032416, 'test_CIDEr': 0.005313143845163627} 我想知道为什么无论我如何设置epoch都没有办法通过VLP从头训练出你的结果呢?请问这是epoch的原因还是显卡的原因或者您设置了其他什么超参数呢?能否麻烦您抽空回答一下我的这个问题,非常感谢!!!

您好,请问您的问题解决了么,我跟您遇到了一样的问题

可能需要改一下json中task的参数,把inference改为finetune,这里我没有说明好