You would have to clone() the input to the separate branches, in case they are using inplace operations in the first branch, as it would yield unexpected results in the second (and further) branch as seen here:
lin = nn.Linear(10, 10)
branch1 = nn.ReLU(inplace=True)
branch2 = nn.Sigmoid()

# without clone
x = torch.randn(1, 10)
x = lin(x)
print(x)
> tensor([[-0.1115, -0.4749, -0.0076, -0.1911, -0.0425, -0.7667, -1.2244, -0.2573,
            1.6056, -0.1653]], grad_fn=<AddmmBackward>)

x1 = branch1(x)
print(x) # changed inplace!
> tensor([[0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 1.6056,
           0.0000]], grad_fn=<ReluBackward1>)

print(x1)
> tensor([[0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 1.6056,
           0.0000]], grad_fn=<ReluBackward1>)

x2 = branch2(x) # unexpected results
print(x2)
> tensor([[0.5000, 0.5000, 0.5000, 0.5000, 0.5000, 0.5000, 0.5000, 0.5000, 0.8328,
           0.5000]], grad_fn=<SigmoidBackward>)

# with clone
x = torch.randn(1, 10)
x = lin(x)
print(x)
> tensor([[-0.1678, -0.0383,  0.3958,  0.0245, -0.3356,  0.2320,  0.0355, -0.1278,
            0.1390,  0.5725]], grad_fn=<AddmmBackward>)

x1 = branch1(x.clone())
print(x) # not changed
> tensor([[-0.1678, -0.0383,  0.3958,  0.0245, -0.3356,  0.2320,  0.0355, -0.1278,
            0.1390,  0.5725]], grad_fn=<AddmmBackward>)

print(x1)
> tensor([[0.0000, 0.0000, 0.3958, 0.0245, 0.0000, 0.2320, 0.0355, 0.0000, 0.1390,
           0.5725]], grad_fn=<ReluBackward1>)

x2 = branch2(x)
print(x2)
> tensor([[0.4581, 0.4904, 0.5977, 0.5061, 0.4169, 0.5578, 0.5089, 0.4681, 0.5347,
           0.6393]], grad_fn=<SigmoidBackward>)