This is because your Tensors have different sizes,
You need to add the keepdim=True argument within your sum to keep the dimensions the same size. This works,
Xnumerator = torch.cross(Xleft, Xright, dim=1)
norm2 = Xnumerator.pow(2).sum(keepdim=True, dim=1).sqrt()
nu = Xnumerator / norm2