我正在尝试将自动编码器的编码器输出训练在固定的能量范围内,以使得对于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。怎么了?