tf.nn.l2_normalize

博客介绍了inside-outside-net中,为达更好效果将不同尺度特征concat,concat前在通道维度上进行norm,使用TensorFlow的tf.nn.l2_normalize函数。还说明了函数重要参数,以(3,3)张量举例,指定axis为0时在第一个维度计算每列模值并做除法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在inside-outside-net中,使用了将不同尺度特征concat的方法,来达到更好效果。在concat之前,使用了在通道维度上norm的办法,这个操作在TensorFlow中使用tf.nn.l2_normalize函数。

先看看函数声明

def l2_normalize(x, axis=None, epsilon=1e-12, name=None, dim=None):

重要的参数是前两个,x是数据张量,axis是指定要在哪一维度上进行norm。

实验代码

import tensorflow as tf

data = tf.constant([[1,2,3],[4,5,6],[7,8,9]],dtype=tf.float32)
result_1 = tf.nn.l2_normalize(data,axis=0)
result_2 = tf.nn.l2_normalize(data,axis=1)
with tf.Session() as sess:
    print(sess.run(data))
    print('-----')
    print(sess.run(result_1))
    print('-----')
    print(sess.run(result_2))

实验结果

[[1. 2. 3.]
 [4. 5. 6.]
 [7. 8. 9.]]
-----
[[0.12309149 0.20739034 0.26726127]
 [0.49236596 0.51847583 0.53452253]
 [0.86164045 0.82956135 0.80178374]]
-----
[[0.26726124 0.5345225  0.8017837 ]
 [0.45584232 0.5698029  0.6837635 ]
 [0.5025707  0.5743665  0.64616233]]

结论:

指定axis为0,则在数据张量的第一个维度上进行计算,得到的结果是按照如下公式得到的:

output = x / sqrt(max(sum(x**2), epsilon))

用(3,3)的张量举例,在第一个维度上计算每一列的模,就是计算每一列的模值,然后,每一列的值都除以对应的模值。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值