日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

机器学习模型中step与epoch,batch_size之间的关系

發布時間:2023/11/30 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 机器学习模型中step与epoch,batch_size之间的关系 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文主要談談自己對step,epoch,batch_size這幾個常見參數的理解。
最近在調試模型的時候,發現在使用keras.optimizer.adam時,模型在添加了新的一層2D卷積層后難以收斂,在不調整初始權重矩陣的情況下,想通過衰減學習率來使loss function的收斂性更好。

tf.keras.optimizers.Adam(learning_rate=0.001,beta_1=0.9,beta_2=0.999,epsilon=1e-07,amsgrad=False,name="Adam",**kwargs )

可以看到,adam這個optimizer在沒有其他參數條件的情況下,默認學習率為固定0.001。

為了調整學習率,在keras的文檔中找到了下述示例代碼,代碼的意思很簡單,初始學習率為0.01,衰減需要的step為10000,衰減率為0.9,即每次經過10000 steps,學習率就衰減為原來的0.9。

lr_schedule = keras.optimizers.schedules.ExponentialDecay(initial_learning_rate=1e-2,decay_steps=10000,decay_rate=0.9) optimizer = keras.optimizers.SGD(learning_rate=lr_schedule)

那么這里的step和我們在編譯模型時選的epoch與batch_size有什么關系呢。
需要理解的是,在訓練模型的過程中,一個step其實指的就是一次梯度更新的過程。例如在每個epoch中有2000個用于訓練的圖片,我們選取了batch_size=100,那么我們就需要2000 images / 100 (images/step) = 20 steps來完成這個epoch。

換個角度,從神經網絡的角度來說,我們都知道機器學習的最終目的,就是最小化Loss function損失函數。L(W)=1K∑t=1Kl(yt,ytetoile)L(W) = \frac{1} {K}\sum_{t=1}^{K}l(y_t,y_{t_{etoile}})L(W)=K1?t=1K?l(yt?,ytetoile??)。 我們會發現這里的loss function 是K組訓練數據的平均誤差,這里的K其實就是我們在訓練模型時選擇的batch_size,即將多個訓練數據整合到一起,再通過最小化他們的平均誤差來優化權重矩陣。那么經過每個batch_size的訓練,我們計算梯度,更新權重的過程就稱為一個step。

有了對于step的更深刻的認識,我們就可以輕松地根據step自行調整學習率了。

總結

以上是生活随笔為你收集整理的机器学习模型中step与epoch,batch_size之间的关系的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。