我希望有一个像K.l2_normalize这样的函数,但是能够使输出结果的总和为1
L2标准化公式如下:
x
---------------
sqrt(sum(x**2))
例如,对于输入 [3, 1, 4, 3, 1],输出为 [3/6, 1/6, 4/6, 3/6, 1/6],计算结果为 12/6 = 1/2。
但我想要的是:
x
---------------
||x||
例如,对于输入 [3, 1, 4, 3, 1],其输出为 [3/12, 1/12, 4/12, 3/12, 1/12]=12/12=1。
在Python中,我想得到这样的结果:
import tensorflow as tf
from tensorflow.python.keras import backend as K
from tensorflow.python.keras.layers import Lambda
x = tf.keras.layers.Input(tensor=tf.constant([[3, 1, 4, 3, 1]], dtype=tf.float32))
n_layer = Lambda(lambda t: "somefunction" )(x)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
print(n_layer.eval())
---------输出结果--------
[[0.25 0.0833 0.3333 0.25 0.0833 ]]
n_layer = Lambda(lambda t: t/tf.linalg.norm(t,ord=1) )(x)
然后就对了! - Li Deyang