Pytorch Autograd: что означает ошибка времени выполнения: «grad может быть неявно создан только для скалярных выходов» - PullRequest
1 голос
/ 22 октября 2019

Я пытаюсь глубоко понять автоград Pytorch;Я хотел бы наблюдать градиент простого тензора после прохождения сигмоидальной функции, как показано ниже:

import torch
from torch import autograd 

D = torch.arange(-8, 8, 0.1, requires_grad=True)

with autograd.set_grad_enabled(True):
    S = D.sigmoid()
S.backward()

Моя цель - получить D.grad (), но даже перед вызовом я получаю ошибку времени выполнения:

RuntimeError: grad can be implicitly created only for scalar outputs

Я вижу еще одну запись с похожим вопросом, но ответ там не применим к моему вопросу. Спасибо

1 Ответ

1 голос
/ 23 октября 2019

Ошибка означает, что вы можете запустить .backward (без аргументов) только для унитарного / скалярного тензора. Т.е. тензор с одним элементом.

Например, вы можете сделать

T = torch.sum(S)
T.backward()

, поскольку T будет скалярным выводом.

Я разместил еще немного информацииоб использовании pytorch для вычисления производных тензоров в этот ответ .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...