Rate this Page

torch.copysign#

torch.copysign(input,other,*,out=None)Tensor#

Create a new floating-point tensor with the magnitude ofinput and the sign ofother, elementwise.

outi={inputiif otheri0.0inputiif otheri0.0\text{out}_{i} = \begin{cases} -|\text{input}_{i}| & \text{if } \text{other}_{i} \leq -0.0 \\ |\text{input}_{i}| & \text{if } \text{other}_{i} \geq 0.0 \\\end{cases}

Supportsbroadcasting to a common shape,and integer and float inputs.

Parameters:
  • input (Tensor) – magnitudes.

  • other (Tensor orNumber) – contains value(s) whose signbit(s) areapplied to the magnitudes ininput.

Keyword Arguments:

out (Tensor,optional) – the output tensor.

Example:

>>>a=torch.randn(5)>>>atensor([-1.2557, -0.0026, -0.5387,  0.4740, -0.9244])>>>torch.copysign(a,1)tensor([1.2557, 0.0026, 0.5387, 0.4740, 0.9244])>>>a=torch.randn(4,4)>>>atensor([[ 0.7079,  0.2778, -1.0249,  0.5719],        [-0.0059, -0.2600, -0.4475, -1.3948],        [ 0.3667, -0.9567, -2.5757, -0.1751],        [ 0.2046, -0.0742,  0.2998, -0.1054]])>>>b=torch.randn(4)tensor([ 0.2373,  0.3120,  0.3190, -1.1128])>>>torch.copysign(a,b)tensor([[ 0.7079,  0.2778,  1.0249, -0.5719],        [ 0.0059,  0.2600,  0.4475, -1.3948],        [ 0.3667,  0.9567,  2.5757, -0.1751],        [ 0.2046,  0.0742,  0.2998, -0.1054]])>>>a=torch.tensor([1.])>>>b=torch.tensor([-0.])>>>torch.copysign(a,b)tensor([-1.])

Note

copysign handles signed zeros. If the other argument has a negative zero (-0),the corresponding output value will be negative.