我制作了一个变化自动编码器来增强数据。
它工作正常,但我希望增强数据中的某些列比其他列有更多的变化。
例如,我实际上生成了这个数据:
100 16 2.6
105 16.6 2.7
110 16.7 2.8
您会告诉我:这很正常,您在第二列的大范围内没有足够的真实输入数据,而第一列的值约为 105。确实如此,但我的第二列很重要,这就是我的输入数据看起来很重要:
100 16 2.5
110 20 3.5
120 30 3.7
130 40 4
200 80 7
.....
我想给第二列更多的权重,使其在从 1 到 100 的整个实际输入数据范围内变化,并得到如下结果:
100 20 3
105 50 3.5
110 80 6
....
也许你可以对损失添加额外的惩罚,以激励特征 2 的更高方差。
实现此目的的一种方法是将
sigma_feature2
直接合并到损失项中,例如loss_total = loss_original + 0.1 * 1 / sigma_feature2**2
。其中 sigma_feature2
是特征 2) 的潜在表示的方差参数。
或者,您可以添加一个激活损失项来查看特征 2 的输出激活,并将
1 / nn.L2Loss(feature2_activations)
添加到损失项中。