IntermediateLayerGetter vs create_feature_extractor vs hooks vs timm to extract features

Hello community. I have a lot of doubts of what’s the best way to achieve feature from specific layers of a CNN model.

Checking the vision documentation, repository and others autors, basically we could say that IntermediateLayerGetter,feature_extractor.create_feature_extractor(), torch.Tensor.register_hook or timm are the usual way.

Checking the official implementation of vision repository, models with FPN, either create_feature_extractor or torch.Tensor.register_hook are used but IntermediateLayerGetter. So I don’t know why create_feature_extractor exists? …

In fact I have experimented some problems using create_feature_extractor that are solved if I use timm extraction method (to use with normalizing flow)…

What’s the optimal/best or recommendation in your experience to extract features?.