欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

2.3 自动求梯度

程序员文章站 2022-03-21 19:46:36
...

小白学深度学习

 
 

1. 示例

x = tf.reshape(tf.Variable(range(4), dtype = tf.float32), (4, 1))

with tf.GradientTape() as t:
    t.watch(x)
    y = 2 * tf.matmul(tf.transpose(x), x)

dy_dx = t.gradient(y, x)

 
 

2. 训练模式和预测模式

with GradientTape(persistent=True) as g:
    g.watch(x)
    y = x * x
    z = y * y
    dz_dx = g.gradient(z, x)
    dy_dx = g.gradient(y, x)

dz_dx
dy_dx

 
 

3. 对Python控制流求梯度

def f(a):
    b = a * 2
    while tf.norm(b) < 1000:
        b = b * 2
    if tf.reduce_sum(b) > 0:
        c = b
    else:
        c = b * 100
    return c

a = tf.random.normal((1, 1), dtype = tf.float32)
with GradientTape() as t:
    t.watch(a)
    c = f(a)
t.gradient(c, a) == c/a