Требуется ли для секвенирования последовательности Keras реализация метода __next__? - PullRequest
0 голосов
/ 01 ноября 2019

Документация 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.

Однако исходный код для fit_generator и других подобных методов в training_generator.py вызывает nextМетод с генератором передан в качестве аргумента. Насколько я понимаю, это означает, что класс, который подклассы из Sequence должен быть итератором, который требует реализации метода __next__.

Для того, чтобы использовать класс, подкласс из Sequence с такими методами, как fit_generator, predict_generator и т. Д. Требуется ли для реализации __next__ метод?

1 Ответ

0 голосов
/ 01 ноября 2019

Нет, реализовывать __next__ не нужно, если вы тщательно проверите fit_generator в training_generator.py, вы увидите, что используется другой API, если генератор является подклассом Sequence, __next__не используется для последовательностей.

Это было реализовано таким образом, потому что Sequence может быть прочитано несколькими рабочими, поэтому он использует API на основе индекса, а не API с сохранением состояния, такой как __next__.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...