Explicit shape declaration

What is the reason behind the explicit declaration of the 4-tuple(why not 3 (size + depth)?) filterShape for each conv layer ? In addition to having to calculate the “flattened” input to the dense layers each time we change the architecture of the model. Can’t we infer these shapes like in Sequential of keras implicitly?

Keras only supports this because it has separate build/compile steps. This adds quite a bit of complexity for layer authors. I used to think it was worth the extra complexity, but after trying to add something similar to PyTorch I changed my mind about it, which is why fastai doesn’t provide that.