torch.pow 无效

torch.pow does not work

我正在尝试使用 PyTorch 创建自定义损失函数,但 运行 遇到了一个简单的错误。

当我尝试使用 torch.pow 获取 PyTorch 变量的指数时,我收到以下错误消息:

AttributeError: 'torch.LongTensor' 对象没有属性 'pow'

在 python 终端中,我创建了一个简单的变量,并尝试执行相同的操作,但收到了相同的错误。这是一个应该重现问题的片段:

import torch
from torch.autograd import Variable
import numpy as np

v = Variable(torch.from_numpy(np.array([1, 2, 3, 4])))
torch.pow(v, 2)

我找不到关于此问题的任何信息,搜索结果中也没有显示任何内容。帮忙?

编辑:当我尝试使用 torch.sqrt() 时也会出现此问题 编辑:如果我尝试做

,也会发生同样的问题
v.pow(2)

pow 绝对是 v 的一种方法,文档明确指出 pow 是一种存在的方法,并以张量作为参数。我真的不明白这是怎么发生的,在我看来,文档完全错误,这些方法实际上不起作用。

您需要将张量初始化为浮点数,因为pow总是returns一个浮点数。

import torch
from torch.autograd import Variable
import numpy as np

v = Variable(torch.from_numpy(np.array([1, 2, 3, 4], dtype="float32")))
torch.pow(v, 2)

之后您可以将其转换回整数

torch.pow(v, 2).type(torch.LongTensor)

产量

Variable containing:
  1
  4
  9
 16
[torch.LongTensor of size 4]