Fix stop_gradient inconsistent API #7416
Merged
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.
The
stop_gradient
documentation states that the argument should be a list ofvariables. The Theano implementation crashes if the argument is a list of
variables and the CNTK implementation crashes regardless but expects a list anyway (since it passes it to combine). The TensorFlow implementation expects one variable but in case a list is passed it doesn't crash as long as the shapes are all the same.
This commit handles both cases as can be expected. The following code illustrates the current Keras behaviour.
This PR makes the behaviour consistent. When passed a single tensor a single tensor is returned. When passed a list or a tuple a list is returned.
Although returning a list and expecting a list would be more consistent with the previous documentation it wouldn't be consistent with the code's behaviour which could result in breaking others' code. This change now is backwards compatible but makes the behaviour consistent and documents it.