如何在 pytorch 中使用可学习参数,限制在 0 和 1 之间?

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 。

Sha*_*hai 4

您可以让“原始”参数采用任何值,然后将其传递给 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) 内