Я пытаюсь замаскировать (принудительно обнулить) значения определенного веса в PyTorch.Веса, которые я пытаюсь замаскировать, определены следующим образом: def __init__
class LSTM_MASK(nn.Module):
def __init__(self, options, inp_dim):
super(LSTM_MASK, self).__init__()
....
self.wfx = nn.Linear(input_dim, curernt_output, bias=add_bias)
Маска также определена в def __init__
как
self.mask_use = torch.Tensor(curernt_output, input_dim)
Маска является постоянной и.requires_grad_()
равно False
для параметра маски.Теперь в def forward
части класса я пытаюсь выполнить поэлементное умножение параметра веса и маски до завершения линейной операции
def forward(self, x):
....
self.wfx.weight = self.wfx.weight * self.mask_use
wfx_out = self.wfx(x)
Я получаю сообщение об ошибке ann:
self.wfx.weight = self.wfx.weight * self.mask_use
File "/home/xyz/anaconda2/lib/python2.7/site-packages/torch/nn/modules/module.py", line 537, in __setattr__
.format(torch.typename(value), name))
TypeError: cannot assign 'torch.cuda.FloatTensor' as parameter 'weight' (torch.nn.Parameter or None expected)
Но когда я проверяю оба параметра с помощью .type()
, оба они появляются как torch.cuda.FloatTensor
.Я не уверен, почему здесь есть ошибка.