tensorflow實現梯度下降演算法

2021-10-09 00:14:55 字數 1766 閱讀 2307

假設每次生成資料的公式為

每次計算出的損失函式為(這裡使用平方損失函式)

每次採用梯度下降演算法,將梯度η設定為0.001,梯度下降公式為

)#將data初始化為二維的對應陣列

defgetloss

(w,b)

: totalloss =

0.0 radientw =

0.0 radientb =

0.0for i in

range

(len

(data)):

x = data[i][0

] y = data[i][1

] totalloss = totalloss+

(w*x+b-y)**2

radientw = radientw+

2*x*

(w*x+b-y)

radientb = radientb+2*

(w*x+b-y)

return radientw/

(float

(len

(data)))

,radientb/

(float

(len

(data)))

,totalloss/

(float

(len

(data)))

#之前這上面的return函式少了乙個括號,這裡報錯invalid syntax

defradientlow

(w,b)

:for i in

range

(9999):

#梯度下降1000次

print

('i = %d'

%i) radientw,radientb,totalloss = getloss(w,b)

print

('w = %f,b = %f,totalloss = %f'

%(w,b,totalloss)

) w = w-

0.001

*radientw

b = b-

0.001

*radientb

if __name__ ==

"__main__"

: radientlow(0,

0)

tensorflow梯度下降

import tensorflow as tf model parameters w tf.variable 0 dtype tf.float32 w初值及型別 b tf.variable 0 dtype tf.float32 b初值及型別 model input and output x tf.p...

TensorFlow 梯度優化相關

tf.trainable variables可以得到整個模型中所有trainable true的variable,也是自由處理梯度的基礎 tf.gradients 用來計算導數。該函式的定義如下所示 def gradients ys,xs,grad ys none,name gradients co...

tensorflow 檢視梯度方式

1.為什麼要檢視梯度 對於初學者來說網路經常不收斂,loss很奇怪 就是不收斂 所以懷疑是反向傳播中梯度的問題 1 求導之後的數 的絕對值 越來越小 趨近於0 這就是梯度程式設計客棧消失 2 求導之後的數 的絕對值 越來越大 特別大,發散 這就是梯度 所以說呢,當loss不正常時,可以看看梯度是否處...