我的回归问题要求网络输出y
具有 unit norm ||y|| = 1.
。我想将其作为Lambda
线性激活后的一层:
from keras import backend as K
...
model.add(Dense(numOutputs, activation='linear'))
model.add(Lambda(lambda x: K.l2_normalize(x)))
后端是 TensorFlow。代码编译但网络预测输出向量具有不同的范数(范数不是 1 并且是变化的)。
关于我做错了什么的任何提示?
问题是你没有将axis
参数传递给K.l2_normalize
函数。因此,它将对整个批次中的所有元素进行归一化,使它们的范数等于 1。要解决这个问题,只需传递axis=-1
到最后一个轴的归一化:
model.add(Lambda(lambda x: K.l2_normalize(x, axis=-1)))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句