How to load each module in reverse?

I’m Newbie on pytorch.

Now, I would like to see the values (input, output, weight, bias, and gradient) of each layer in reverse order using hook during test. How can I access the each layer?

class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        # 1 input image channel, 6 output channels, 5x5 square convolution
        # kernel
        self.layer = nn.Sequential(OrderedDict([
            ('conv1', nn.Conv2d(1, 6, 5)),
            ('relu1', nn.ReLU()),
            ('mp1', nn.MaxPool2d((2, 2))),
            ('conv2', nn.Conv2d(6, 16, 5)),
            ('relu2', nn.ReLU()),
            ('mp2', nn.MaxPool2d((2, 2)))
        ]))
        self.fc_layer = nn.Sequential(OrderedDict([
            ('fc1', nn.Linear(256, 120)),
            ('fc_relu1', nn.ReLU()),
            ('fc2', nn.Linear(120, 84)),
            ('fc_relu2', nn.ReLU()),
            ('fc3', nn.Linear(84, 10)),
        ]))

    def forward(self, x):
        in_size = x.size(0)
        x = self.layer(x)
        x = x.view(in_size, -1)  # flatten the tensor
        x = self.fc_layer(x)
        return F.log_softmax(x, dim=1)

model = Net()
# For Forward Hook
for name, module in model.layer.named_children():
    print(name)
    module.register_forward_hook(printnorm)
for name, module in model.fc_layer.named_children():
    print(name)
    module.register_forward_hook(printnorm)

def test():

        for name, module in model.layer.named_children()
            module.output.shape