如何限制或约束一层输出的平均“能量”?

时间:2019-08-31 07:44:45

标签: python keras autoencoder loss-function

我正在尝试将自动编码器的编码器输出训练在固定的能量范围内,以使得对于2D平面,输出x1 ^ 2 + x2 ^ 2为<=2。我想不出该怎么做它通过归一化层,因为两个输出是相关的,所以我尝试创建一个自定义损失函数。

def custom_loss(signal):
     def loss(y_true, y_pred):
         sloss =  K.switch(K.greater((K.sum(K.square(signal))),K.constant(2)),K.sum(K.square(signal))-K.constant(n_channel),K.constant(0))
         return sloss+keras.losses.categorical_crossentropy(y_true, y_pred)
     return loss

但是,当我尝试创建自定义损失函数时,我希望我的16个不同的单热矢量输入的输出在半径2范围内隔开,但实际上所有值都接近于0。怎么了?

0 个答案:

没有答案