使用tensorflow 實(shí)現(xiàn)反向傳播求導(dǎo)
看代碼吧~
X=tf.constant([-1,-2],dtype=tf.float32) w=tf.Variable([2.,3.]) truth=[3.,3.] Y=w*X # cost=tf.reduce_sum(tf.reduce_sum(Y*truth)/(tf.sqrt(tf.reduce_sum(tf.square(Y)))*tf.sqrt(tf.reduce_sum(tf.square(truth))))) cost=Y[1]*Y optimizer = tf.train.GradientDescentOptimizer(1).minimize(cost) with tf.Session() as sess: sess.run(tf.global_variables_initializer()) print(sess.run(Y)) print(sess.run(w)) print(sess.run(cost)) print(sess.run(Y)) sess.run(optimizer) print(sess.run(w))
結(jié)果如下
W由[2,3]變成[-4,-25]
過(guò)程:
f=y0*y=w0*x0*w*x=[w1*x1*w0*x0,w1*x1*w1*x1,]
f對(duì)w0求導(dǎo),得w1*x0*x1+0=6 ,所以新的w0=w0-6=-4
f對(duì)w1求導(dǎo),得 w0*x0*x1+2*w1*x1*x1=28,所以新的w1=w1-28=-25
補(bǔ)充:【TensorFlow篇】--反向傳播
一、前述
反向自動(dòng)求導(dǎo)是 TensorFlow 實(shí)現(xiàn)的方案,首先,它執(zhí)行圖的前向階段,從輸入到輸出,去計(jì)算節(jié)點(diǎn)
值,然后是反向階段,從輸出到輸入去計(jì)算所有的偏導(dǎo)。
二、具體
1、舉例
圖是第二個(gè)階段,在第一個(gè)階段中,從 x =3和 y =4開(kāi)始去計(jì)算所有的節(jié)點(diǎn)值
f ( x / y )=x 2 * y + y + 2
求解的想法是逐漸的從圖上往下,計(jì)算 f ( x , y )的偏導(dǎo),使用每一個(gè)連續(xù)的節(jié)點(diǎn),直到我們到達(dá)變量節(jié)
點(diǎn),嚴(yán)重依賴(lài)鏈?zhǔn)角髮?dǎo)法則!
2.具體過(guò)程:
因?yàn)閚7是輸出節(jié)點(diǎn),所以f=n7,所以𝜕f/𝜕𝑛7= 1
讓我們繼續(xù)往下走到n5節(jié)點(diǎn),𝜕f/𝜕𝑛5=𝜕f/𝜕𝑛7∗𝜕𝑛7/𝜕𝑛5 . 我們已知𝜕f/𝜕𝑛7=1,所以我們需要知道𝜕𝑛7/𝜕𝑛5 ,因?yàn)閚7=n5+n6,所以我們求得𝜕𝑛7/𝜕𝑛5=1,所以𝜕f/𝜕𝑛5=1*1=1
現(xiàn)在我們繼續(xù)走到節(jié)點(diǎn)n4,𝜕f/𝜕𝑛4=𝜕f/𝜕𝑛5∗𝜕𝑛5/𝜕𝑛4,因?yàn)閚5=n4*n2,我們求得�𝑛5/𝜕𝑛4=n2,𝜕f/𝜕𝑛4=1*4
沿著圖一路向下,我們可以計(jì)算出所有節(jié)點(diǎn),就能計(jì)算出 𝜕𝑓/𝜕x= 24,𝜕𝑓/𝜕y= 10
那我們就可以利用和上面類(lèi)似的方式方法去計(jì)算𝜕𝑓/𝜕𝑤
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python 中多態(tài)性的示例和類(lèi)的繼承多態(tài)性詳解
多態(tài)性通常在類(lèi)的方法中使用,其中我們可以具有相同方法名稱(chēng)的多個(gè)類(lèi),本文給大家介紹Python 中多態(tài)性的示例和類(lèi)的繼承多態(tài)性詳解,需要的朋友可以參考下2023-10-10使用Python中的reduce()函數(shù)求積的實(shí)例
今天小編就為大家分享一篇使用Python中的reduce()函數(shù)求積的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-06-06python爬取網(wǎng)頁(yè)內(nèi)容轉(zhuǎn)換為PDF文件
這篇文章主要為大家詳細(xì)介紹了python爬取網(wǎng)頁(yè)內(nèi)容轉(zhuǎn)換為PDF文件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06pandas預(yù)處理部分地區(qū)數(shù)據(jù)案例
本文主要介紹了pandas預(yù)處理部分地區(qū)數(shù)據(jù)案例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01Python獲取數(shù)據(jù)庫(kù)數(shù)據(jù)并保存在excel表格中的方法
今天小編就為大家分享一篇Python獲取數(shù)據(jù)庫(kù)數(shù)據(jù)并保存在excel表格中的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-06-06python3 pygame實(shí)現(xiàn)接小球游戲
這篇文章主要為大家詳細(xì)介紹了python3 pygame實(shí)現(xiàn)接小球游戲,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-05-05Python實(shí)現(xiàn)多張圖片合成文字的效果
前段時(shí)間看到有人問(wèn)如何使用Python實(shí)現(xiàn)多張圖片組成文字的效果?覺(jué)得還挺有意思,于是嘗試做了一下,剛好趕上端午節(jié),所以打算從網(wǎng)上下載1000張王心凌的照片,組成端午安康的字樣,感興趣的可以了解一下2022-06-06使用Python開(kāi)發(fā)windows GUI程序入門(mén)實(shí)例
這篇文章主要介紹了使用Python開(kāi)發(fā)windows GUI程序入門(mén)實(shí)例,本文著重介紹開(kāi)發(fā)環(huán)境必須的軟件,代碼實(shí)現(xiàn)相對(duì)簡(jiǎn)單,需要的朋友可以參考下2014-10-10