Как использовать обучаемый параметр в pytorch, ограниченный между 0 и 1?

#python #python-3.x #pytorch

#питон #python-3.x #пыторч

Вопрос:

Я хочу использовать обучаемый параметр, который принимает только значения от 0 до 1. Как я могу сделать это в pytorch?

В настоящее время я использую:

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

Но по мере тренировки я получаю нули и NaN для этого параметра.

Ответ №1:

Вы можете иметь «необработанный» параметр, принимающий любые значения, а затем передавать его через сигмоидальную функцию, чтобы получить значения в диапазоне (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)