Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

为啥我这evaluate perplexity is nan #82

Open
kaac5 opened this issue Nov 24, 2023 · 8 comments
Open

为啥我这evaluate perplexity is nan #82

kaac5 opened this issue Nov 24, 2023 · 8 comments

Comments

@kaac5
Copy link

kaac5 commented Nov 24, 2023

Eval: BLEU-4 is 0.00 || ExactMatchScore is 0.00 || EditDistance is 0.00 || perplexity is 0nan

  • New best score (0nan)!
  • Saving model...
@kaac5
Copy link
Author

kaac5 commented Nov 24, 2023

evaluate 那里的write_prediction self._get_feed_dict(img, formula=formula) 没啥不设置 lr 默认dropout是1啊,我这算出来ce_words_eval是nan

@Eternal579
Copy link

我和你差不多,只有EditDistance 是0.86,跑了10h了还这样,请问你现在知道怎么解决了吗

@kaac5
Copy link
Author

kaac5 commented Dec 5, 2023

我和你差不多,只有EditDistance 是0.86,跑了10h了还这样,请问你现在知道怎么解决了吗
解决了:
问题的本质还是在write_prediction方法中的self._get_feed_dict(img, formula=formula),默认不传lr和dropout的话lr=None, dropout=1,这两个值一个为none一个为1感觉都很有问题,1是100%的意思吧,lr为None的话不会更新fd[self.lr]。
因此直接 config_eval = Config({
"dir_answers": self._dir_output + "formulas_val/",
"batch_size": config.batch_size + 20,
'lr': lr_schedule.lr,
'dropout': config.dropout
})
然后 fd = self._get_feed_dict(img, formula=formula, lr=config.lr, dropout=config.dropout),perplexity就不是nan了,这个基本意思就把每次迭代training中用的的lr和dropout带入到每次迭代的evaluate中。

@Eternal579
Copy link

非常感谢,我这就试试

@kaac5
Copy link
Author

kaac5 commented Dec 5, 2023

非常感谢,我这就试试

他这还有一个问题,就是比如Epoch 42/600实际上训练的是Epoch41 保存的也是Epoch40,也就是说你看他显示的开始了Epoch 42,实际上开始的是Epoch 41, 然后保存的是Epoch 40

我和你差不多,只有EditDistance 是0.86,跑了10h了还这样,请问你现在知道怎么解决了吗

你用的是full 数据 还是 small 数据啊?得用full数据

@Eternal579
Copy link

我用的是我们老师给的数据)hh
非常感谢你的帮助~

@gaoshaojie0708
Copy link

哈喽!我能问下你们用的python和TensorFlow是什么版本的吗?

@kaac5
Copy link
Author

kaac5 commented Mar 28, 2024

我想更新一下,就是不要使用我上面说的在evaluate带入dropout lr的办法,这样就不是evaluate了,然是training了。还有perplexity is nan的原因可能有多种,这个项目是使用tensorflow1.X写的,目前1.X都已经无法下载了,因此需要兼容到tensorflow2.X 上,需要大改许多代码(比较麻烦,因为没改到对的地方可能会导致训练预期结果不对)。python3.9 3.10 3.11都可以,(注tensorflow最后一个支持Windows 显卡训练的版本是2.10),当然没有7~8G显存就不要考虑用显卡训练了。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants