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回答
-
梯度下降方法计算的是f(x)的为最小值时,x的取值。x=0是梯度下降计算的初始值,这时候f(x)并不是最小值,f(x)存在梯度;利用梯度下降法一步步使f(x)减小,当减小到最小值时, f(x)的梯度为0,f'(x)也为0,这时的x=-0.3333.
012019-11-20
相似问题