Я пытаюсь реализовать этот код в pytorch:
self.scale_var = tf.Variable(
0.1, name='scale_var',
trainable=True,
dtype=tf.float32,
constraint=lambda x: tf.clip_by_value(x, 0, np.infty))
Я хочу иметь скалярное значение, которое можно обучить, и хотел бы масштабировать константу с этим значением в функции потерь. Является ли приведенный ниже код соответствующим?
class pytorch_variable(nn.Module):
def __init__(self):
super(pytorch_variable,self).__init__()
self.var = nn.Parameter(torch.tensor(0.1))
def forward(self):
return self.var
Что сейчас происходит, так это то, что градиенты проходят через это, но обучаемое скалярное значение медленно уменьшается до нуля, уменьшаясь на 0,001 от начального значения 0,1 (до нуля потому что я обрезаю данные после вызова loss.backward ()).