#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)