相关疑难解决方法(0)

PyTorch autograd -- 只能为标量输出隐式创建 grad

我在 中使用该autograd工具PyTorch,并且发现自己需要通过整数索引访问一维张量中的值。像这样的东西:

def basic_fun(x_cloned):
    res = []
    for i in range(len(x)):
        res.append(x_cloned[i] * x_cloned[i])
    print(res)
    return Variable(torch.FloatTensor(res))


def get_grad(inp, grad_var):
    A = basic_fun(inp)
    A.backward()
    return grad_var.grad


x = Variable(torch.FloatTensor([1, 2, 3, 4, 5]), requires_grad=True)
x_cloned = x.clone()
print(get_grad(x_cloned, x))
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息:

[tensor(1., grad_fn=<ThMulBackward>), tensor(4., grad_fn=<ThMulBackward>), tensor(9., grad_fn=<ThMulBackward>), tensor(16., grad_fn=<ThMulBackward>), tensor(25., grad_fn=<ThMulBackward>)]
Traceback (most recent call last):
  File "/home/mhy/projects/pytorch-optim/predict.py", line 74, in <module>
    print(get_grad(x_cloned, x))
  File "/home/mhy/projects/pytorch-optim/predict.py", line 68, in get_grad
    A.backward()
  File "/home/mhy/.local/lib/python3.5/site-packages/torch/tensor.py", line 93, in backward …
Run Code Online (Sandbox Code Playgroud)

python pytorch autograd

10
推荐指数
1
解决办法
1万
查看次数

使用自动微分库计算任意张量的偏导数

(注意:这不是关于反向传播的问题。)我正在尝试在GPU上使用PyTorch张量代替Numpy数组求解非线性PDE。我想计算任意张量的偏导数,类似于中心有限差分numpy.gradient函数的作用。我有其他解决此问题的方法,但是由于我已经在使用PyTorch,所以我想知道是否有可能使用autograd模块(或者通常是任何其他自动分化模块)来执行此操作。

我创建了numpy.gradient函数的张量兼容版本-运行速度快得多。但是,也许有更优雅的方法可以做到这一点。我找不到其他任何资料可以解决这个问题,无论是表明这是可能的还是不可能的。也许这反映了我对自动分化算法的无知。

python numpy pde pytorch autograd

5
推荐指数
1
解决办法
161
查看次数

标签 统计

autograd ×2

python ×2

pytorch ×2

numpy ×1

pde ×1