Keras序列的子类是否需要实现__next_方法



Keras Sequence类文档显示

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.

然而,CCD_ 1&training_generator.py中的其他类似方法调用next方法,并将generator作为参数传递。根据我的理解,这意味着从Sequence派生的类应该是一个迭代器,它需要实现__next__方法。

为了使用Sequence的子类和fit_generatorpredict_generator等方法,是否需要实现__next__方法?

不,不需要实现__next__,如果仔细检查fit_generator1中的fit_generator,会发现如果生成器是Sequence的子类,则会使用另一个API,__next__不用于序列。

这是通过这种方式实现的,因为Sequence可以被多个工作者读取,这就是为什么它使用基于索引的API,而不是像__next__那样的有状态API。

最新更新