TypeError fixes in converter.py->ConvertConcatenate #230
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.
I wanted to convert a Keras model using the nengo_dl Converter class as proposed in the docu:
https://www.nengo.ai/nengo-dl/examples/keras-to-snn.html#Converting-a-Keras-model-to-a-Nengo-network
Thereby, I ran into two bugs so far. The issue seems to be, that nengo_dl Converter is not prepared for a Concatenate layer to get a list of length 1 as input. Here is my approach to fix it.
self.input_shape in ConvertConcatenate returns EITHER a list of tuples OR just a tuple, though the convert function in ConvertConcatenate assumes that what is returned is always a list of tuples. Therefore, in specific cases as in mine you get a TypeError.
If I get it right, this for loop at line 1242 assumes self.layer.input to always be a list of KerasTensors. Though, if the Concatenate layer gets only one KerasTensor as input, self.layer.input is not a list but just that KerasTensor. Keras layers work on symbolic inputs/outputs meaning their "KerasTensor" do not hold actual data and therefore do not implement functions like "__len__". That is why in that case we gete a TypeError as well.