@quanguet
Yes, both are correct and your example would be the standard way.
Having a lot of repeating paths, the current approach in this thread might be cleaner, but it depends on your coding style I guess. 
@kl_divergence
You can often observe a worse accuracy if you pass a different sized input compared with the inputs that were used to train the model. I’m not sure, if upsampling your input by a factor of approx. x2 in one spatial dimension will hurt your performance. You should just try it and see, if it’s working.
You could try to add a pooling layer in both augmentX modules, e.g. x = F.avg_pool2d(x,x.size()[2:]) so that your linear layers would get in_features=ni.