我的自动编码器模型学习像素值为-1、0或1的图像中最常见的模式。虽然我的模型运行良好,但解码陷入了浮点值介于-1和1之间的局部最小值。
在Pytorch中仍然可以约束内核过滤器以使其具有条目-1、0或1来观察更好的学习能力吗?
答案 0 :(得分:0)
如果目标值是离散的,则在将重构损失转换为交叉熵的同时,使用3类以上的像素级softmax可能更有意义。
答案 1 :(得分:0)
您肯定可以做到这一点,但这可能不是一个好主意。要将权重限制为特定值,您可以在每次训练迭代后将权重设置为所需的值,例如,使用torch.clamp将权重设置为[-1,1]范围:
model.my_layer.weight.detach().clamp_(-1,1)
虽然上述方法在某些情况下可能有效,但是将权重离散化为仅3个可能值的问题将很难使用梯度进行优化,并且可能会导致很少学习或根本没有学习。