3-11课中对f(x)做梯度下降,最后算出来x是指f(x)=0时,x的解?

来源:3-11 tf.GradientTape基本使用方法

慕姐9068210

2019-11-01

这个梯度下降计算没看懂是什么操作,为什么要用x减去学习率乘以导数,这个导数是指x为0时候的导数吗?
最后算得的结果x=-0.33333 又是什么?是指f(x)=0时,x的解?

def f(x):
return 3. * x ** 2 + 2. * x - 1

learning_rate = 0.1
x = tf.Variable(10.0)

for _ in range(200):
with tf.GradientTape() as tape:
z = f(x)
dz_dx = tape.gradient(z, x)
x.assign_sub(learning_rate * dz_dx)
print(x)
#<tf.Variable ‘Variable:0’ shape=() dtype=float32, numpy=-0.3333333>

写回答

1回答

慕丝5151373

2019-11-10

梯度下降方法计算的是f(x)的为最小值时,x的取值。x=0是梯度下降计算的初始值,这时候f(x)并不是最小值,f(x)存在梯度;利用梯度下降法一步步使f(x)减小,当减小到最小值时, f(x)的梯度为0,f'(x)也为0,这时的x=-0.3333.

0
1
慕姐9068210
非常感谢!
2019-11-20
共1条回复

Google老师亲授 TensorFlow2.0 入门到进阶

Tensorflow2.0实战—以实战促理论的方式学习深度学习

1849 学习 · 896 问题

查看课程