TensorFlow学习笔记之–[tf

2022-02-19

以下函数可用于解决梯度消失或爆炸问题。

tf.clip_by_value(
    t,
    clip_value_min,
    clip_value_max,
    name=None
)

:A.

输入一个张量t,将t中每个元素的值压缩在和之间。小于min等于min,大于max的元素等于max。

例子:

import tensorflow as tf;

import numpy as np;
 
A = np.array([[1,1,2,4], [3,4,8,5]])
 
with tf.Session() as sess:
	print sess.run(tf.clip_by_value(A, 2, 5))
>>>
[[2 2 2 4]
 [3 4 5 5]]

2.tf.

tf.clip_by_norm(

图片[1]-TensorFlow学习笔记之–[tf-唐朝资源网

t, clip_norm, axes=None, name=None )

:A.

指剪裁渐变。通过控制梯度的最大范式来防止梯度爆炸的问题,是一种常用的梯度缩减方法。

注意上面的t可以是一个列表,所以最后的比较是比较t的两个范式总和。请看下面的例子:

a = np.array([2.,5.])
b = tf.clip_by_norm(a, 5)
with tf.Session() as sess:
    print(sess.run(tf.norm(a)))

图片[2]-TensorFlow学习笔记之–[tf-唐朝资源网

print(sess.run(b)) >>> 5.3851647 [1.8569534 4.6423836]

3.tf.

tf.clip_by_average_norm(
    t,
    clip_norm,
    name=None
)

图片[3]-TensorFlow学习笔记之–[tf-唐朝资源网

:A.

其实和tf.差不多,只是把(l_2,norm(t))改成了(l_2,(t)=frac{1}{n},l_2 ,norm(t)),(n)表示t的元素个数。

例子

a = np.array([3, 4]).astype('float32')
e = tf.clip_by_average_norm(a, 1)
with tf.Session() as sess:
    print(sess.run(e))
>>>
[1.2 1.6]

验证:(frac{3*1}{frac{1}{2}sqrt{3^2+4^2}}=frac{3}{2.5} = 1.2)。

4.tf.

图片[4]-TensorFlow学习笔记之–[tf-唐朝资源网

tf.clip_by_global_norm(
    t_list,
    clip_norm,
    use_norm=None,
    name=None
)

请注意,这是一个元组或列表。

计算公式如下:

[_norm=sqrt{sum_i^n{l_2,norm(t[i])^2}}]

如果>,则其中所有元素的计算方式如下:

[t_list[i]=frac{t_list[i]*clip_norm}{max(_norm,clip_norm)}]

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片