Parallel processing 有没有办法在Pytorch中并行使用torch.autograd.gradient?

Parallel processing 有没有办法在Pytorch中并行使用torch.autograd.gradient?,parallel-processing,pytorch,gradient,derivative,Parallel Processing,Pytorch,Gradient,Derivative,我试图训练一个网络,其中损耗不仅是输出的函数,而且是输出w.r.t.输入的导数。问题是,虽然批处理输出的计算可以与Pytorh的模块并行完成,但我找不到一种并行求导的方法。以下是我在连载中能做的最好的事情: import torch x=torch.rand(300,1) dydx=torch.zeros_like(x) fc=torch.nn.Linear(1,1) x.requires_grad=True for ii in range(x.size(0)): xi=x[ii,0:]

我试图训练一个网络,其中损耗不仅是输出的函数,而且是输出w.r.t.输入的导数。问题是,虽然批处理输出的计算可以与Pytorh的模块并行完成,但我找不到一种并行求导的方法。以下是我在连载中能做的最好的事情:

import torch
x=torch.rand(300,1)
dydx=torch.zeros_like(x)
fc=torch.nn.Linear(1,1)
x.requires_grad=True
for ii in range(x.size(0)):
    xi=x[ii,0:] 
    yi=torch.tanh(fc(xi))    
    dydx[ii]=torch.autograd.grad(yi,xi,create_graph=True)[0]
dydxsum=(dydx**2).sum()
dydxsum.backward()
在上面的代码中,x被拆分以节省内存和时间。然而,当x的大小变大时,并行化(在CUDA中)仍然是必要的。如果必须通过修补Pytorch来实现,那么我们将非常感谢您提供一个从何处开始的提示