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

2024-02-06

我想使用一个仅取 0 到 1 之间值的可学习参数。我如何在 pytorch 中做到这一点?

目前我正在使用:

self.beta = Parameter(torch.Tensor(1))
#initialize
zeros(self.beta)

但当我训练时,我得到这个参数的零和 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

现在您有了一个具有可训练参数的模块,该参数实际上在范围 (0,1) 内

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐