我正在使用 Keras 训练二元分类器。我想在每个时期后生成 precision_score 和 recall_score ,以便更深入地分析训练。在互联网上我找到了教程/帮助,例如:
https://medium.com/@thongonary/how-to-compute-f1-score-for-each-epoch-in-keras-a1acd17715a2 https://medium.com/@thongonary/how-to-compute-f1-score-for-each-epoch-in-keras-a1acd17715a2
https://github.com/keras-team/keras/issues/2607 https://github.com/keras-team/keras/issues/2607
I found 在自定义回调中访问验证数据 https://stackoverflow.com/questions/47676248/accessing-validation-data-within-a-custom-callback因为我使用的是 Keras fit_generator,所以这对我来说效果最好。它设法在每个时期后计算精确度和召回率。但是,我认为在创建自定义回调时我做错了什么。我收到以下错误消息:
File "...\envs\keras\lib\site-packages\keras\preprocessing\image.py", line 845, in _flow_index
current_index = (self.batch_index * self.batch_size) % self.n
ZeroDivisionError: integer division or modulo by zero
我最好的猜测是自定义回调错误地继承自 Keras。
有人经历过这个问题吗?
或者有人知道我缺少什么吗?
UPDATE
我想我现在明白了这个错误。在 Keras image.py 中当前索引除以self.n。在名为 Iterator 的类中(在 Keras 中)n定义为
n:整数,数据集中要循环的样本总数。
换句话说,我的理解是网络不能提供零样本。我意识到我的测试集是空的(0 个样本),因此出现错误消息。
纠正后(向测试集提供数据),代码运行良好:)
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)