使用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]
過程:
f=y0*y=w0*x0*w*x=[w1*x1*w0*x0,w1*x1*w1*x1,]
f對w0求導(dǎo),得w1*x0*x1+0=6 ,所以新的w0=w0-6=-4
f對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開始去計(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)重依賴鏈?zhǔn)角髮?dǎo)法則!
2.具體過程:
因?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
那我們就可以利用和上面類似的方式方法去計(jì)算𝜕𝑓/𝜕𝑤
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python基于pyCUDA實(shí)現(xiàn)GPU加速并行計(jì)算功能入門教程
這篇文章主要介紹了Python基于pyCUDA實(shí)現(xiàn)GPU加速并行計(jì)算功能,結(jié)合實(shí)例形式分析了Python使用pyCUDA進(jìn)行GPU加速并行計(jì)算的原理與相關(guān)實(shí)現(xiàn)操作技巧,需要的朋友可以參考下2018-06-06
解決Python中字符串和數(shù)字拼接報(bào)錯(cuò)的方法
相信很多的新手朋友都會(huì)碰到python連接字符串和數(shù)字的問題,因?yàn)閜ython是強(qiáng)類型的語言,如果你把一個(gè)字符串和數(shù)字直接做連接的操作的話,就會(huì)直接報(bào)錯(cuò)的,今天就給大家說下字符串和數(shù)字拼接的問題,有需要的朋友們可以參考借鑒。2016-10-10
淺談python的elementtree模塊處理中文注意事項(xiàng)
這篇文章主要介紹了淺談python的elementtree模塊處理中文注意事項(xiàng),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03

