假設每次生成資料的公式為
每次計算出的損失函式為(這裡使用平方損失函式)
每次採用梯度下降演算法,將梯度η設定為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次
('i = %d'
%i) radientw,radientb,totalloss = getloss(w,b)
('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不正常時,可以看看梯度是否處...