these are the use cases that I want to improve, and it seems that I am not alone (see for example this recent post):


The network is fairly complex so, to know and specify the input dimensions of layer N+1, you really need to pass a sample of data through the layers 1…N. This happens before the training at the time when the network structure is specified/created.


You have several instances of train data sets with different properties/dimensions and don’t want to create a separate code for each of these sets, but rather create a net based on a sample of data. This also happens before the training.


You want to make the code in the init and forward calls more elegant and manageable by completely eliminating the separation of the declaration of the network from its actual invocation. The pytorch is already the best framework in this regard compared to Tensorflow, Theano and others, where the code is simply much harder to understand and debug because of the huge separation between the declaration and the actual computation.