You can store the forward results in an attribute. Simply saving resnet18’s output after first 7x7 conv…
class Net(nn.module):
    def __init__(self):
        self.net = models.resnet18(pretrained=True)
        self.remove_handle = self.net._modules['relu'].register_forward_hook(self.forward_hook)
        self.forward_output = None
    def forward_hook(self, module, input, output):
        # save any modules output in an attribute and later use it in backprop.
        self.forward_output = output

Afraid I won’t be able to answer your question on 'will multiple calls to a module cause problems" since I don’t have much idea about the paper(on effective path of neural network) you’re talking about. But regarding a module being called several times, the forward hook will be invoked on every call.