精簡版SGD理解隨機梯度下降過程

2022-07-22 03:51:11 字數 1257 閱讀 2144

1

#精簡版sgd

2def

sgd(self, training_data, epochs, mini_batch_size, eta,):

3 n =len(training_data)4#

進行epochs次主迴圈來計算weights和biases

5for j in

xrange(epochs):6#

每個主迴圈走一遍所有訓練資料,並shuffle一下提供好的隨機性

7random.shuffle(training_data)8#

對於每個計算隨機梯度的具體事件,設定乙個mini_batch,用這mini_batch_size個樣本來計算隨機梯度

9 mini_batches =[

10 training_data[k:k+mini_batch_size]

11for k in

xrange(0, n, mini_batch_size)]12#

計算隨機梯度,更新weights和biases,eta是學習率

13for mini_batch in

mini_batches:

14 self.update_mini_batch(mini_batch, eta)

打個比方吧,比如田徑跑步。

一次只能8個人一起跑,這就是模型的批數量,也就是說batch number 為8

然後開始跑步,也就是說進行模型的前向傳播,

然後跑步到終點,一次迭代完成,這整個的一次過程稱為模型的一次迭代。

那麼剩下的田徑選手怎麼辦,繼續從頭開始跑,也就是說開始下一次的迭代。

所有的選手都跑完之後,也就是說資料集中的資料在模型中都訓練完了,這就是一次epoch。

epoch與epoch之間是獨立的,一次接一次的迭代,乙個epoch接乙個epoch。

SGD 隨機梯度下降法

中心思想 隨機梯度下降法是每次先將大量的訓練集中隨機打亂順序,再取其中固定數量的例項組成mini batch,按照minibatch進行權重和偏差的更新,重複操作直到所有的資料都按minibatch的規格取完了一遍,這時就完成了乙個epoch,然後在按照提前設定好的epoch數量進行重複計算更新。對...

python實現隨機梯度下降 SGD

使用神經網路進行樣本訓練,要實現隨機梯度下降演算法。這裡我根據麥子學院彭亮老師的講解,總結如下,神經網路的結構在另一篇部落格中已經定義 def sgd self,training data,epochs,mini batch size,eta,test data none if test data ...

批處理梯度下降BGD與隨機梯度下降SGD

梯度下降 gd 是最小化風險函式 損失函式的一種常用方法,隨機梯度下降和批量梯度下降是兩種迭代求解思路,下面從公式和實現的角度對兩者進行分析,如有哪個方面寫的不對,希望糾正。下面的h x 是要擬合的函式,j theta 損失函式,theta是引數,要迭代求解的值,theta求解出來了那最終要擬合的函...