Я пытаюсь вычислить градиент
out = x.sign()*torch.pow(x.abs(), alpha)
относительно альфа.
Я попробовал следующее:
class Power(nn.Module):
def __init__(self, alpha=2.):
super(Power, self).__init__()
self.alpha = nn.Parameter(torch.tensor(alpha))
def forward(self, x):
return x.sign()*torch.abs(x)**self.alpha
но этот класс продолжает давать мне nan
на тренировке моей сети. Я ожидаю увидеть что-то вроде grad=out*torch.log(x)
, но не могу добраться до него. Этот код, например, ничего не возвращает:
alpha_rooting = Power()
x = torch.randn((1), device='cpu', dtype=torch.float)
out = (alpha_rooting(x)).sum()
out.backward()
print(out.grad)
Я пытаюсь использовать autograd
для этого тоже не случайно. Как мне решить эту проблему? Спасибо.