У меня есть этот код
Код: Выделить всё
...
vertex_id = 275
deform_verts.retain_grad() # input
predicted_silhouette.retain_grad() # output
impact_img = torch.zeros_like(predicted_silhouette, requires_grad=False)
for i in range(image_size):
for j in range(image_size):
pixel = predicted_silhouette[i][j]
pixel.retain_grad()
pixel.backward()
impact = deform_verts.grad[vertex_id]
impact_img[i][j] += impact.sum()
plt.imshow(impact_img.detach().cpu().numpy())
Я пытаюсь создать изображение на основе того, как одна запись deform_verts влияет на все изображение. Для этого я просматриваю каждый пиксель выходного изображения, вызываю .backward() и вставляю его градиент в новое изображение для целей визуализации. Однако, когда я вызываю метод back() для первого пикселя, я не могу вызвать его для второго, поскольку подозреваю, что промежуточные переменные уже использовались в обратном распространении ошибки. Я пытался использовать continue_graph, но не думаю, что это дает то, что мне нужно, поскольку изображение выглядит далеко не так, как я ожидал.
Подробнее здесь:
https://stackoverflow.com/questions/790 ... n-error-of