torch.sign
是 PyTorch 库中用于计算输入张量每个元素符号的函数。下面从功能概述、函数原型、参数解释、返回值、使用示例以及与相关函数对比等方面详细介绍 torch.sign
。
功能概述
torch.sign
函数会返回一个与输入张量形状相同的新张量,其中每个元素的值表示输入张量对应元素的符号。具体规则为:
- 如果输入元素为正数,输出元素为 1。
- 如果输入元素为负数,输出元素为 -1。
- 如果输入元素为零,输出元素为 0。
函数原型
torch.sign(input, *, out=None)
参数解释
input
:必需参数,为需要计算符号的输入张量,可以是任意形状和数据类型的张量。out
:可选参数,是一个用于存储输出结果的张量。如果指定了out
,计算结果将存储在这个张量中,并且out
的形状和数据类型必须与输入张量经过torch.sign
计算后的结果兼容。
返回值
返回一个新的张量,其形状与输入张量相同,数据类型为 torch.float32
或与 out
参数指定的张量的数据类型一致(如果指定了 out
)。该张量中的每个元素表示输入张量对应元素的符号。
使用示例
简单示例
import torch# 创建一个输入张量
input_tensor = torch.tensor([-2.5, 0, 3.7])
# 计算符号
output_tensor = torch.sign(input_tensor)
print(output_tensor)
在这个示例中,输入张量包含负数、零和正数,经过 torch.sign
计算后,输出张量为 [-1., 0., 1.]
。
使用 out
参数
import torch# 创建输入张量
input_tensor = torch.tensor([-1.2, 0.5, 0])
# 创建用于存储输出结果的张量
out_tensor = torch.empty(3)
# 计算符号并将结果存储在 out_tensor 中
torch.sign(input_tensor, out=out_tensor)
print(out_tensor)
这里通过指定 out
参数,将计算结果存储在了 out_tensor
中。
与相关函数对比
torch.abs
:torch.abs
函数用于计算输入张量每个元素的绝对值,而torch.sign
关注的是元素的符号。例如,对于输入[-2, 3]
,torch.abs
的输出是[2, 3]
,而torch.sign
的输出是[-1, 1]
。torch.relu
:torch.relu
是一个激活函数,会将输入张量中小于零的元素置为零,大于等于零的元素保持不变。与torch.sign
不同,torch.relu
更侧重于对输入值进行非线性变换,而不是单纯判断符号。
通过 torch.sign
函数,你可以方便地获取张量中每个元素的符号信息,这在很多数值计算和机器学习场景中都有应用,比如在梯度更新时根据梯度的符号进行相应的调整等。