- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
执行 backward
在 Pytorch 中,我们可以使用可选参数 y.backward(v)
计算雅可比矩阵乘以 v
:
x = torch.randn(3, requires_grad=True)
y = x * 2
v = torch.tensor([0.1, 1.0, 0.0001], dtype=torch.float)
y.backward(v)
print(x.grad)
我认为计算雅可比矩阵的成本相同,因为计算雅可比矩阵所需的 AD 图中的每个节点仍在计算中。那么为什么 Pytorch 不想给我们雅可比矩阵呢?
最佳答案
当您调用向后()时,PyTorch 更新 grad
每个可学习参数与一些损失函数的梯度 L
w.r.t 到那个参数。它的设计考虑了梯度下降 [GD](及其变体)。计算出梯度后,您可以使用 x = x - learning_rate * x.grad
更新每个参数.实际上,在背景中必须计算雅可比行列式,但这不是应用 GD 优化时(通常)所需要的。矢量 [0.1, 1.0, 0.0001]
允许您将输出减少到标量,以便 x.grad 将是一个向量(而不是矩阵,以防您不减少),因此 GD 是明确定义的。但是,您可以使用单热向量向后获得雅可比行列式。例如,在这种情况下:
x = torch.randn(3, requires_grad=True)
y = x * 2
J = torch.zeros(x.shape[0],x.shape[0])
for i in range(x.shape[0]):
v = torch.tensor([1 if j==i else 0 for j in range(x.shape[0])], dtype=torch.float)
y.backward(v, retain_graph=True)
J[:,i] = x.grad
x.grad.zero_()
print(J)
关于python - 为什么 Pytorch autograd 需要另一个向量来向后而不是计算雅可比行列式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63816321/
我试图找到这 3 个函数的 Wronskian 行列式,但代码有“TypeError: No loop matching the specified signature and casting was
我需要编写一个在编译时计算行列式的 constexpr 函数。最明显的解决方案是使用拉普拉斯展开。支持 C++14。 #include #include constexpr int get_cof
是否有任何类似 A * A-1 = I 的数学性质可用于测试类似格式的单元测试中行列式的计算? 最佳答案 手动计算一个(或多个)已知数组的行列式,并将您的结果与该数字进行比较。 尝试不同大小、排列方式
我有一个大的 numpy 数组 arr,形状为 (N, D, M, D) 其中 D 是两个或三。该数组可以被认为是 (D,D) 矩阵 block ,这些矩阵在 N 和 M 维度中被阻塞在一起。我想取这
我是一名优秀的程序员,十分优秀!