我想要一个像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,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 ]]
您正在寻找的是l1-norm
,因此您需要将顺序设置为1。您可以通过中的ord
参数传递规范的顺序tf.linalg.norm
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: tf.linalg.norm(t,ord=1) )(x)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
print(n_layer.eval())
输出:
12.0
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句