【问题标题】:Constrain kernel filters to only have entries of -1, 0 or 1?将内核过滤器限制为只有 -1、0 或 1 的条目?
【发布时间】:2023-06-03 17:11:01
【问题描述】:

我的自动编码器模型学习像素值为 -1、0 或 1 的图像中最常见的模式。虽然我的模型运行良好,但解码陷入了浮点值介于 -1 和 1 之间的局部最小值。

在 Pytorch 中我是否可以将内核过滤器限制为具有条目 -1、0 或 1 以观察更好的学习能力?

【问题讨论】:

    标签: pytorch torch autoencoder


    【解决方案1】:

    如果您的目标值是离散的,那么在将重建损失转化为交叉熵时,在 3 个类别上使用像素级 softmax 可能更有意义。

    【讨论】:

      【解决方案2】:

      你绝对可以这样做,但这可能是个坏主意。要将权重限制为特定值,您可以在每次训练迭代后简单地将权重设置为您想要的值,例如使用 torch.clamp 将它们设置为范围 [-1, 1]:

      model.my_layer.weight.detach().clamp_(-1,1)
      

      虽然上述方法在某些情况下可能有效,但您将权重离散化为仅 3 个可能值的问题将很难使用梯度进行优化,并且可能会导致几乎没有学习。

      【讨论】: