如何获取火炬中颤动图的数据?

时间:2018-08-21 10:33:52

标签: python pytorch

我有一些函数z(x,y),我想生成一个颤动图(梯度的2D图)。像这样:

enter image description here

为此,我必须在线性网格上运行渐变并将数据调整为matplotlib.quiver的格式。

一种幼稚的方法是在一个循环中向前和向后迭代:

for i in range(10):
    for j in range(10):
        x = torch.tensor(1. * i, requires_grad=True)
        y = torch.tensor(1. * j, requires_grad=True)
        z = x ** 2 + y ** 2
        z.backward()
        print(x.grad, y.grad)

这显然是效率很低的。有一些关于如何从x,y生成线性网格的示例,但我稍后需要将网格更改回正向公式的格式,获取梯度向量并将其放回,等等。

在numpy中一个简单的例子是:

import matplotlib.pyplot as plt
n = 25
x_range = np.linspace(-25, 25, n)
y_range = np.linspace(-25, 25, n)
X, Y = np.meshgrid(x_range, y_range)
Z = X**2 + Y**2
U, V = 2*X, 2*Y
plt.quiver(X, Y, U, V, Z, alpha=.9)

使用pytorch的标准方法是什么?有一些简单的例子吗?

0 个答案:

没有答案