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_generator
、predict_generator
等方法,是否需要实现__next__
方法?
不,不需要实现__next__
,如果仔细检查fit_generator
1中的fit_generator
,会发现如果生成器是Sequence
的子类,则会使用另一个API,__next__
不用于序列。
这是通过这种方式实现的,因为Sequence
可以被多个工作者读取,这就是为什么它使用基于索引的API,而不是像__next__
那样的有状态API。