For step 2. I meant to be able to use models written by someone else, including Pytorch’s pretrained models 12. In this case, I don’t think it is possible to use inheritance as that would involve changing Pytorch’s code. I’ve replaced the inheritance strategy with object composition by adding a class field _model to SuperModel/Trainer which can be used for training and inference.
I’ll push my code to Github so you can have a look at my changes. Let me know what you think.
Happy to see the code evolve so quickly 
Thanks again!