Fix optimizer for not supporting all kinds of iterables #5355
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
BUG
原因是,在
optimizer.py
里面但pytorch对应的源码是这样的
itertools.chain生成的确实是一个 iterable,但并不是generator type,所以会被我们这里写的if条件卡住。但Pytorch这里的写法不会卡住其他的 iterable 所以Pytorch可以运行那段代码但我们不行。
最后没有使用Pytorch的写法(过于奇怪),把原本check的generator type改成了collections.abc.Iterator,改了所有带这个判断的optimizer