现在都统一称呼为tf.math.l2_normalize
tf1.15版本
别名:
tf.compat.v1.linalg.l2_normalize
tf.compat.v1.math.l2_normalize
tf.compat.v1.nn.l2_normalize
tf.linalg.l2_normalize
tf.nn.l2_normalize
作用
对于axis = 0的1-D张量,计算如下:
output = x / sqrt(max(sum(x**2), epsilon))
对于具有更多维度的x,沿着维度axis独立地规范化每个1-D切片.
使用
tf.math.l2_normalize(
x,
axis=None,
epsilon=1e-12,
name=None,
dim=None
)
参数
x: 输入的向量
axis: 要标准化的尺寸,使用L2范数沿维度axis正则化
epsilon: 规范化的下限值.如果norm <sqrt(epsilon),将使用sqrt(epsilon)作为除数.
name:操作名称
dim:轴的别名(后被弃用)
返回值
和X相同形状的向量
tf2.2
别名
tf.linalg.l2_normalize
tf.nn.l2_normalize
使用
tf.math.l2_normalize(
x, axis=None, epsilon=1e-12, name=None
)
唯一的区别就是dim弃用掉了
例子
import tensorflow as tf
input = tf.constant([[1,2,3],[4,5,6],[7,8,9]])
output1 = tf.nn.l2_normalize(input, axis = 0)
output2 = tf.nn.l2_normalize(input, axis = 1)
output3 = tf.nn.l2_normalize(input)
with tf.Session() as sess:
print sess.run(output1)
print sess.run(output2)
print sess.run(output3)
output1
[[0.12309149 0.20739034 0.26726127]
[0.49236596 0.51847583 0.53452253]
[0.86164045 0.82956135 0.80178374]]
output2
[[0.26726124 0.5345225 0.8017837 ]
[0.45584232 0.5698029 0.6837635 ]
[0.5025707 0.5743665 0.64616233]]
output3
[[0.05923489 0.11846977 0.17770466]
[0.23693955 0.29617444 0.35540932]
[0.4146442 0.4738791 0.53311396]]
计算
tf.nn.l2_normalize(input, axis = 0)
按行进行l2范化
结果就是每一行的数字都除以对应的norm得到的向量就是结果
tf.nn.l2_normalize(input, axis = 1)
按列进行l2范化,逸雅阁的,不赘述
tf.nn.l2_normalize(input)
按所有的进行l2范化,同理。
注意
这里的norm对应前面提到的参数epsilon,如果norm <sqrt(epsilon),将使用sqrt(epsilon)作为除数.即可以通过调节epsilon来设置下限。