import numpy as np
# 根据计算原理:t_list[i] * clip_norm / max(global_norm, clip_norm)
# 生成0-9之间的数组成的列表
init_t_list = np.asarray([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
# 方式1:使用np自带的函数
l2 = np.linalg.norm(init_t_list)
print(l2)
# 方式2:手写实现方式
l2_ = np.sqrt(np.sum(np.square(init_t_list)))
print(l2_)
# 假设裁剪规约数等于5.0
clip_norm = 5.0
# 求裁剪后的值
t_list = init_t_list * clip_norm / max(l2, clip_norm)
print(t_list)
# 裁剪后L2值
t_list_l2 = np.linalg.norm(t_list)
print(t_list_l2)
# 输出结果
16.8819430161
16.8819430161
[ 0. 0.29617444 0.59234888 0.88852332 1.18469776 1.48087219
1.77704663 2.07322107 2.36939551 2.66556995]
5.0
tf.clip_by_norm 梯度裁剪的计算原理
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 可以看作是Softmax计算的另一种加速。 (注意区分下Word2Vec的huffman softmax) 在正常...
- 参考:https://blog.csdn.net/u013713117/article/details/56281...