1D blob handling in MSRA/Xavier fillers + new filler tests #6278
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.
#6240 changed fillers to use
Blob::shape
instead of legacy accessors. However, the legacy functions returned 1 when the requested dimension didn't exist (e.g.Blob::width
on a 1D blob). Unfortunately, some fillers (Xavier, MSRA) relied on this fact when computingfan_out
. Sinceshape
will fail aCHECK
when a dimension is exceeded, issue #6275 happened (attempt to fill a bias blob with MSRA will cause an error).This PR adds the necessary checks to the filler code - now a filler will check whether a specified dimension can be requested before calling
shape
.We could also consider upgrading tests for fillers - currently they are only ran on 4D blobs. Tests for other dimensions might, IMHO, skip the mathematical correctness checks and just make sure we can fill other things (perhaps with a
LOG
on Xavier and MSRA that they were designed for 4D blobs).Fixes #6275