您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關如何使用tensorflow實現反向傳播求導的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
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))
結果如下
W由[2,3]變成[-4,-25]
f=y0*y=w0*x0*w*x=[w1*x1*w0*x0,w1*x1*w1*x1,]
f對w0求導,得w1*x0*x1+0=6 ,所以新的w0=w0-6=-4
f對w1求導,得 w0*x0*x1+2*w1*x1*x1=28,所以新的w1=w1-28=-25
補充:【TensorFlow篇】--反向傳播
反向自動求導是 TensorFlow 實現的方案,首先,它執行圖的前向階段,從輸入到輸出,去計算節點
值,然后是反向階段,從輸出到輸入去計算所有的偏導。
圖是第二個階段,在第一個階段中,從 x =3和 y =4開始去計算所有的節點值
f ( x / y )=x 2 * y + y + 2
求解的想法是逐漸的從圖上往下,計算 f ( x , y )的偏導,使用每一個連續的節點,直到我們到達變量節
點,嚴重依賴鏈式求導法則!
因為n7是輸出節點,所以f=n7,所以?f/??7= 1
讓我們繼續往下走到n5節點,?f/??5=?f/??7???7/??5 . 我們已知?f/??7=1,所以我們需要知道??7/??5 ,因為n7=n5+n6,所以我們求得??7/??5=1,所以?f/??5=1*1=1
現在我們繼續走到節點n4,?f/??4=?f/??5???5/??4,因為n5=n4*n2,我們求得??5/??4=n2,?f/??4=1*4
沿著圖一路向下,我們可以計算出所有節點,就能計算出 ??/?x= 24,??/?y= 10
那我們就可以利用和上面類似的方式方法去計算??/??
感謝各位的閱讀!關于“如何使用tensorflow實現反向傳播求導”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。