我在keras中使用带fit_generator的数据生成器(用于训练和验证数据) . 我得到了意想不到的结果,所以我检测了生成器输出批量索引并计算自上一个纪元以来的步数 . 我已将['acc']添加到模型指标中 .
当fit_generator运行时,我看到它做了几件事:
-
它排队验证数据(但我还没有评估) .
-
迭代所有训练数据并调用on_epoch_end()
-
它又称了10个步骤的训练数据 . 我认为这必须来自回调 . 它在做什么?
-
完成迭代验证数据并调用on_epoch_end()
-
它调用另外10步验证数据 . 再说一遍,它在做什么?
-
fit_generator打印列车/验证损失和准确性以及返回 .
在3和5的10个步骤之后永远不会调用on_epoch_end() . 这可能是一个错误,因为我们需要在下一个纪元之前重置生成器 .
我主要想知道3和5发生了什么,为什么发电机被调用,为什么只有10步?
Versions:
print(keras.__version__)
2.2.2
print(tf.__version__)
1.9.0
1 回答
根据Matias的评论:额外的批次对应于下一个时期的预先排队的批次 . 当fit_generator返回时,它们会掉在地板上 . 在再次调用fit_generator之前,由用户重置发生器 .