我的自动编码器模型学习图像中的最常见的模式与像素值-1,0或1。虽然我的模型运行良好,解码落入局部最小值与-1和1之间的浮点值。
有反正在Pytorch我可以限制内核过滤器有项-1,0或1,观察更好的学习能力?
如果你的目标值是离散的,它可能会更有意义,同时将您的重建流失到交叉熵使用逐像素SOFTMAX超过3班。
你绝对可以做到这一点,但它可能是一个坏主意。为了约束的权重为特定的值,你可以每次训练迭代后只需设置权重到你想要的值,e.g使用torch.clamp将它们设置为区间[1,1]:
model.my_layer.weight.detach().clamp_(-1,1)
虽然上述方法可能在某些情况下工作,你的离散化的权重只有3可能值的问题将很难使用梯度进行优化,并可能导致几乎没有学习。