How to change the outputs of forward_hook?

I would like to change the outputs of module forward_hook, given some torch tensors.

For example, I would like to change the outputs of each relu layers in the module, given select_maps.
Besides, each outputs of relu layer is multiplied by the associated select_maps.

I write a coarse code of my thought as follows:

def hook_forward_net(model, select_maps, layers):
    select_output_maps = []

    def fun(module, inputs, outputs):
        print('\t'+'inputs size: ', inputs[0].size())
        print('\t'+'outputs size: ', outputs[0].size())
        outputs = torch.mul(outputs[0].data.cpu(), select_maps)

    keys0 = list(model._modules.keys())
    for key0 in keys0:
        value0 = model._modules.get(key0)
        if type(value0) == torch.nn.modules.container.Sequential:
            if type(value0._modules.get('2')) == torch.nn.modules.activation.ReLU:
                relu = value0._modules.get('2')
                hook = relu.register_forward_hook(fun)

Does anyone know how to do that in pytorch?