【发布时间】:2019-11-04 17:34:21
【问题描述】:
我正在尝试计算
的梯度out = x.sign()*torch.pow(x.abs(), alpha)
关于 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,但也没有运气。我应该如何解决这个问题?谢谢。
【问题讨论】: