Qub*_*bix 6 python python-3.x pytorch
我想使用一个仅取 0 到 1 之间值的可学习参数。我如何在 pytorch 中做到这一点?
目前我正在使用:
self.beta = Parameter(torch.Tensor(1))
#initialize
zeros(self.beta)
Run Code Online (Sandbox Code Playgroud)
但当我训练时,我得到这个参数的零和 NaN 。
您可以让“原始”参数采用任何值,然后将其传递给 sigmoid 函数以获得函数使用的 (0, 1) 范围内的值。
例如:
class MyZeroOneLayer(nn.Module):
def __init__(self):
self.raw_beta = nn.Parameter(data=torch.Tensor(1), requires_grad=True)
def forward(self): # no inputs
beta = torch.sigmoid(self.raw_beta) # get (0,1) value
return beta
Run Code Online (Sandbox Code Playgroud)
现在您有了一个具有可训练参数的模块,该参数实际上在范围 (0,1) 内