首页 > 解决方案 > pytorch 关于 3D 输入的梯度

问题描述

我想为 3D 输入回归构建 sobolev 网络

在 TensorFlow 中,可以使用如下方式计算神经网络模型的梯度tf.gradient

dfdx,dfdy,dfdz = tf.gradients(pred,[x,y,z])

设 M 是一个 5 层的 Torch 神经网络。如果 X 是一组 (x,y,z)(3dim 数据)并且 M.forward(X) 是 1 dim 输出

如何计算 M.forward(X) 相对于 X 的梯度?就像是:

tf.gradient(M.forward(X),X)

标签: tensorflowpytorchtensorflow2.0

解决方案


例如,如果你想计算这个函数的梯度

y_i = 5*(x_i + 1)² 创建大小为 2x1 的张量,其中填充了需要渐变的 1

x = torch.ones(2, requires_grad=True)

创建了 x 张量的简单线性方程

y = 5 * (x + 1) ** 2

设 o 为多维方程

o = 1/2 *sum(y_i) 在 python 中

o = (1/2) * torch.sum(y)

你可以用 grad 计算

o.backward()
x.grad

您可以在此处获取更多信息https://www.deeplearningwizard.com/deep_learning/practical_pytorch/pytorch_gradients/


推荐阅读