tensorflow - 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)
解决方案
例如,如果你想计算这个函数的梯度
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/
推荐阅读
- c# - 从另一个类调用的文件系统观察程序进程未触发事件 c#
- javascript - Javascript 和 DataTables:使用自定义格式对列进行排序
- angular - 当我的 url 的查询参数发生变化时,如何更新我的组件?
- html - 导航周围的背景图片和下方的文字
- javascript - 将相对图像 URL 添加到哈希名称
- django - Django TabularInline 中的 FOREIGN KEY 约束失败
- javascript - 找不到如何使我的广告居中。我试过 align="center" 和 margin:auto 但没有任何效果。
- php - Symfony 4 Bug Vendor /route.php 在 server:run 之后
- javascript - 在 CORS 域的 .ajax 请求中传递多个标头不起作用
- android - Android Studio 找不到 com.android.tools.build:aapt2:3.2.0-4818971