ZexinYan / Medical-Report-Generation

A pytorch implementation of On the Automatic Generation of Medical Imaging Reports.
199 stars 65 forks source link

请问为什么我最后生成的预测句子,都是同一句,这是什么原因? #11

Open Jennyli-xin opened 3 years ago

Jennyli-xin commented 3 years ago

"Pred Sent": {"0": "", "1": "no acute cardiopulmonary abnormality", "2": "", "3": "", "4": "", "5": ""}

不管是什么图片,都是这句no acute cardiopulmonary abnormality。没有出现你那种生成的句子

Arthurizijar commented 2 years ago

请问您发现了是什么问题吗?我也是相同的问题,一直输出"the lungs are clear"

Jennyli-xin commented 2 years ago

抱歉,没有,这方面的研究暂时搁置了,你有做什么修改吗?在他代码的基础上。

---原始邮件--- 发件人: @.> 发送时间: 2021年11月8日(周一) 晚上9:36 收件人: @.>; 抄送: @.**@.>; 主题: Re: [ZexinYan/Medical-Report-Generation] 请问为什么我最后生成的预测句子,都是同一句,这是什么原因? (#11)

请问您发现了是什么问题吗?我也是相同的问题,一直输出"the lungs are clear"

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.

Arthurizijar commented 2 years ago

我发现最严重的错误应该在于trainer.py的训练函数和验证函数中的Sentence LTSM没有使用 prev_hidden_states = hidden_state更新 我还对损失函数和预处理时的图像变换做了一些修改,现在它可以输出不同的句子了,但看上去效果依然不是很理想 我之后应该可以放出我的代码

Jennyli-xin commented 2 years ago

那等你把代码放到github上我看看,然后我们再交流。原始代码很多细节问题,可能要按照论文里面仔细对照。输出句子是随机的还是有和GT相关性的呢。这个方面研究确实有点难。但是这个模型是OK的。你有看过那篇张宇的硕士论文吧,他好像也放出部分代码。

---原始邮件--- 发件人: @.> 发送时间: 2021年11月10日(周三) 上午9:56 收件人: @.>; 抄送: @.**@.>; 主题: Re: [ZexinYan/Medical-Report-Generation] 请问为什么我最后生成的预测句子,都是同一句,这是什么原因? (#11)

我发现最严重的错误应该在于trainer.py的训练函数和验证函数中的Sentence LTSM没有使用 prev_hidden_states = hidden_state` 我还对损失函数和预处理时的图像变换做了一些修改,现在它可以输出不同的句子了,但看上去效果依然不是很理想 我之后应该可以放出我的代码

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.

Jingwen-Lee commented 2 years ago

我发现最严重的错误应该在于trainer.py的训练函数和验证函数中的Sentence LTSM没有使用 prev_hidden_states = hidden_state更新 我还对损失函数和预处理时的图像变换做了一些修改,现在它可以输出不同的句子了,但看上去效果依然不是很理想 我之后应该可以放出我的代码

您好,我也遇到了相同的问题,请问您已经解决了吗?可以分享一下您的代码吗?

Liqq1 commented 1 year ago

我发现最严重的错误应该在于trainer.py的训练函数和验证函数中的Sentence LTSM没有使用 prev_hidden_states = hidden_state更新 我还对损失函数和预处理时的图像变换做了一些修改,现在它可以输出不同的句子了,但看上去效果依然不是很理想 我之后应该可以放出我的代码

您好,请问您放出代码了吗?想要参考学习一下

Arthurizijar commented 1 year ago

您好,请问您放出代码了吗?想要参考学习一下

在trainer.py第395行和第461行位置加上prev_hidden_states = hidden_states应该就可以输出不同句子了。但因为这个模型还是太简单了,最后的效果还是太好,这和数据集中normal样本过多也相关,代码因为后续没有继续改进了,因此就不放出来了,不好意思

Liqq1 commented 1 year ago

rainer.py第395行和第461行位置加上prev_hidden_states = hidden_states

好的,谢谢! 请问这个是因为这个项目的作者写错了吗?导致一直生成重复的句子?加上这两行之后,才是正确的代码吗? 还是这两行是对原模型的改进呀?

Arthurizijar commented 1 year ago

rainer.py第395行和第461行位置加上prev_hidden_states = hidden_states

好的,谢谢! 请问这个是因为这个项目的作者写错了吗?导致一直生成重复的句子?加上这两行之后,才是正确的代码吗? 还是这两行是对原模型的改进呀?

加上才是LSTM自回归解码的标准过程吧,不然解码器每次循环输入的隐状态变量都是一样的,会造成输出也是一样的

Liqq1 commented 1 year ago

rainer.py第395行和第461行位置加上prev_hidden_states = hidden_states

好的,谢谢! 请问这个是因为这个项目的作者写错了吗?导致一直生成重复的句子?加上这两行之后,才是正确的代码吗? 还是这两行是对原模型的改进呀?

加上才是LSTM自回归解码的标准过程吧,不然解码器每次循环输入的隐状态变量都是一样的,会造成输出也是一样的

你好,抱歉再次打扰,还有个问题想请教一下。代码中不管是trainer中还是tester中,在生成句子和单词的时候都使用了 for sentence_index in range(captions.shape[1])for word_index in range(1, captions.shape[2]) 其中,captions是报告的groundtruth,而在test的时候我们是没有groundtruth的,这边应该怎么理解呀?