No, this won’t work, as x1 and x2 would be a view to input.
You could use my posted code snippet for a quick check:
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.9229, -0.3109, -0.3517,  0.1832,  0.2353, -0.5287, -0.9106, -0.1691,
           -0.6657,  0.1129]], grad_fn=<AddmmBackward>)

x1 = x
x2 = x
x1_out = branch1(x1)
print(x) # changed inplace!
> tensor([[0.0000, 0.0000, 0.0000, 0.1832, 0.2353, 0.0000, 0.0000, 0.0000, 0.0000,
           0.1129]], grad_fn=<ReluBackward1>)
print(x1) # changed inplace!
> tensor([[0.0000, 0.0000, 0.0000, 0.1832, 0.2353, 0.0000, 0.0000, 0.0000, 0.0000,
           0.1129]], grad_fn=<ReluBackward1>)
print(x1_out)
> tensor([[0.0000, 0.0000, 0.0000, 0.1832, 0.2353, 0.0000, 0.0000, 0.0000, 0.0000,
           0.1129]], grad_fn=<ReluBackward1>)
print(x2)
> tensor([[0.0000, 0.0000, 0.0000, 0.1832, 0.2353, 0.0000, 0.0000, 0.0000, 0.0000,
           0.1129]], grad_fn=<ReluBackward1>)