在PyTorch模型中归零权仅在训练中起作用,而在评估期间不起作用

时间:2019-11-04 16:34:23

标签: python-3.x pytorch

我正在做一些与lottery ticket hypothesis相关的实验。这涉及创建修剪蒙版以将权重蒙版中的某些权重归零。

对于修剪蒙版,我使用布尔矩阵。在每次前向呼叫之前,我将这些矩阵应用于修剪后的权重,如下所示:

self.embed_out.data[~self.embed_out_mask] = 0

其中self是模型,embed_outembed_out_mask都是torch.nn.Parameter的实例(。embed_out是权重矩阵,而{{1} }大小完全相同的相应布尔修剪掩码。

这在训练期间效果很好,并且在收敛,损失等方面均达到了预期结果,与论文的结果相符。

但是,在评估期间,完全相同的行会引发以下错误:

embed_out_mask

失败的相应断言如下:

  [stacktrace omitted]
  File "[omitted]", line 214, in forward
    self.embed_out.data[~self.embed_out_mask] = 0
RuntimeError: copy_if failed to synchronize: device-side assert triggered

这对我来说好像将修剪面罩用作索引存在某种超出范围的错误,但是我手动验证了权重矩阵和修剪面罩的大小完全相同。

此错误可能是什么原因?

0 个答案:

没有答案