LinXueyuanStdio / LaTeX_OCR_PRO

:art: 数学公式识别增强版:中英文手写印刷公式、支持初级符号推导(数据结构基于 LaTeX 抽象语法树)Math Formula OCR Pro, supports handwrite, Chinese-mixed formulas and simple symbol reasoning (based on LaTeX AST).
GNU General Public License v3.0
1.07k stars 234 forks source link

为啥我这evaluate perplexity is nan #82

Open kaac5 opened 10 months ago

kaac5 commented 10 months ago

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

kaac5 commented 10 months ago

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

Eternal579 commented 9 months ago

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

kaac5 commented 9 months ago

我和你差不多,只有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 commented 9 months ago

非常感谢,我这就试试

kaac5 commented 9 months ago

非常感谢,我这就试试

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

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

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

Eternal579 commented 9 months ago

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

gaoshaojie0708 commented 6 months ago

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

kaac5 commented 5 months ago

我想更新一下,就是不要使用我上面说的在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显存就不要考虑用显卡训练了。