torch/nn: 乘以常量矩阵的规范方法是什么?

torch/nn: What's the canonical way to multiply by a constant matrix?

nn.MM 需要将要相乘的矩阵的 table 参数。在我的例子中,其中一个矩阵是一些先前定义的模型(例如 nn.Sequential)的输出,另一个只是一个常量矩阵。我如何将常量注入 nn 的管道,我是否应该担心优化器会在我这样做时开始更改它?

我知道我可以通过以下方式解决注入问题:

  1. 写我自己的nn.Module。这看起来很笨重。
  2. 将模型分成两部分并手动注入常量。我真的希望模型只是一些 nn.Module 子类,用 :forward(input) 调用并允许消费者幸福地忽略常量的存在。
  3. 使用 nn.ParallelTable,但这也会将常量暴露给模型消费者。
  4. 使用 nn.Linear 没有偏差并覆盖权重。我只是不确定如何防止优化器执行更新。

您可以创建一个 nn.Linear 并将 :accGradParameters 覆盖为空操作函数

m = nn.Linear(100,200)
-- copy your weights / bias into m.weight / m.bias
m.accGradParameters = function() end
-- m is a constant multiplier thing

使用MulConstant

m=nn.MulConstant(7,true)(myMatrix)