首页 > 解决方案 > 子类化 Keras 序列是否需要实现 __next__ 方法?

问题描述

Keras序列类文档

Every Sequence must implement the __getitem__ and the __len__ methods. If you 
want to modify your dataset between epochs you may implement on_epoch_end. The 
method __getitem__ should return a complete batch.

然而, training_generator.pyfit_generator中其他类似方法的源代码调用方法,生成器作为参数传递。根据我的理解,这意味着子类应该是一个需要实现方法的迭代器。nextSequence__next__

为了使用从Sequence类似fit_generator,predict_generator等方法的子类化的类,是否需要实现__next__方法?

标签: pythonkerasiteratorsequence-generators

解决方案


不,不需要实现__next__,如果你仔细签fit_generatortraining_generator.py,你会发现如果生成器是 的子类Sequence__next__则使用了另一个 API,不用于序列。

这是这样实现的,因为 aSequence可以被多个工作人员读取,这就是为什么它使用基于索引的 API 而不是像__next__.


推荐阅读