The approach of using forward hooks looks alright.
You could generally use all intermediate activations as your “feature” tensors.
To see all modules in a model, you could use print(model), which would print all modules, or look at the implementation of the model directly (e.g. resnet implementation).