99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
2018-11-28 閱讀量: 1055
估算梯度

如果 f 是單變量函數(shù),那么它在 x 點的導(dǎo)數(shù)衡量了當(dāng) x 發(fā)生變化時, f(x) 變化了多少。導(dǎo)

數(shù)通過差商的極限來定義:

def difference_quotient(f, x, h):

return (f(x + h) - f(x)) / h

其中 h 趨近于 0。

導(dǎo)數(shù)就是在點 (x, f (x)) 的切線的斜率, 而差商就是通過點 (x, f (x)) 和點 (x+h, f (x+h)) 的割

線的斜率。當(dāng) h 越來越小,割線與切線就越來越接近(見圖 8-2)。

很多函數(shù)可以精確地計算導(dǎo)數(shù),比如平方函數(shù) square:

def square(x):

return x * x

它的導(dǎo)數(shù)為:

def derivative(x):

return 2 * x

你可以通過計算來確認(rèn)——如果你想的話——先顯式地計算差商,再取極限。

如果算不出梯度(或不想算)呢? Python 中無法直接運算極限,但可以通過計算一個很小

derivative_estimate = partial(difference_quotient, square, h=0.00001)

# 繪出導(dǎo)入matplotlib.pyplot作為plt的基本相同的形態(tài)

x = range(-10,10)

plt.title("精確的導(dǎo)數(shù)值與估計值")

plt.plot(x, map(derivative, x), 'rx', label='Actual') # 用 x 表示

plt.plot(x, map(derivative_estimate, x), 'b+', label='Estimate') # 用 + 表示

plt.legend(loc=9)

plt.show()

當(dāng) f 是一個多變量函數(shù)時,它有多個偏導(dǎo)數(shù),每個偏導(dǎo)數(shù)表示僅有一個輸入變量發(fā)生微小

變化時函數(shù) f 的變化。

我們把導(dǎo)數(shù)看成是其第 i 個變量的函數(shù),其他變量保持不變,以此來計算它第 i 個偏導(dǎo)數(shù):

def partial_difference_quotient(f, v, i, h):

"""compute the ith partial difference quotient of f at v"""

w = [v_j + (h if j == i else 0) # 只對v的第i個元素增加h

for j, v_j in enumerate(v)]

return (f(w) - f(v)) / h

再以同樣的方法估算它的梯度函數(shù):

def estimate_gradient(f, v, h=0.00001):

return [partial_difference_quotient(f, v, i, h)

for i, _ in enumerate(v)]

0.0000
3
關(guān)注作者
收藏
評論(0)

發(fā)表評論

暫無數(shù)據(jù)
推薦帖子