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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

图解深度学习-梯度下降学习率可视化

發布時間:2023/12/9 pytorch 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图解深度学习-梯度下降学习率可视化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

圖解深度學習-梯度下降學習率可視化

  • 梯度下降學習率問題

梯度下降學習率問題

用最簡單的SGD做實驗,討論學習率問題。

學習率如果太小,則會下降很慢,需要很多次迭代,如果太大,就會出現發散,具體可以動手調試,也可以看截圖。

這里我選取的代價函數J(x)=0.5(x?1)2+0.5J(x) = 0.5 (x-1)^2 + 0.5J(x)=0.5(x?1)2+0.5,求導方便。

import numpy as np import matplotlib.pyplot as plt from ipywidgets import *#梯度函數的導數 def gradJ(theta):return theta-1#梯度函數 def J(theta):return 0.5*(theta-1)**2+0.5def train(lr,epoch,theta):thetas = []for i in range(epoch):gredient = gradJ(theta)theta = theta - lr*gredientthetas.append(theta)plt.figure(figsize=(10,10))x = np.linspace(-1,3,100)plt.plot(x, J(x))plt.plot(np.array(thetas),J(np.array(thetas)),color='r',marker='o')plt.plot(1.0, 0.5, 'r*',ms=15)plt.text(1.0, 0.55, 'min', color='k')plt.text(thetas[0]+0.1, J(thetas[0]), 'start', color='k')plt.text(thetas[-1]+0.1, J(thetas[-1])-0.05, 'end', color='k')plt.xlabel('theta')plt.ylabel('loss')plt.show()print('theta:',theta)print('loss:',J(theta))#可以隨時調節,查看效果 (最小值,最大值,步長) @interact(lr=(0, 5, 0.001),epoch=(1,100,1),init_theta=(-1,3,0.1),continuous_update=False) def visualize_gradient_descent(lr=0.05,epoch=10,init_theta=-1):train(lr,epoch,init_theta) 學習率:0.05 迭代次數:10 參數初始化:-1 10次迭代還沒到最小值

學習率:0.33 迭代次數:10 參數初始化:-1 10次迭代接近收斂了,可見加大學習率可以加快訓練

學習率:1.87 迭代次數:10 參數初始化:-1 軌跡開始波動了,梯度方向不停的在變,最后還沒到收斂。解釋下梯度方向為什么開始變了,根據公式theta= theta- lr*gredient, 可以看到開始theta大致為2.7,梯度為正數大致為2,然后學習率又1.87 , theta=2.7 - 2 x 1.87<0 即theta變為負數了,所有到曲線右邊了, 同理繼續更新,此時梯度為負數了,減去一個負數等于加上正數,theta變為正數, 所以又到曲線右邊,如此循環,直到最低點。 如此一來,來回波動很多次,所以收斂速度變慢了。我們當然希望它跟上面一樣是從一個方向一直下降。

學習率:2.18 迭代次數:10 參數初始化:-1 繼續加到學習率,直到變得不收斂,我把坐標范圍拉大了,看了清楚,已經開始發散了。原因是因為,學習率過大,使得更新后的theta無論正負,絕對值會越來越大,會開始往上跑,再加上越上面的梯度絕對值越來越大,所以每次更新完之后theta的絕對值繼續變大,就無限循環了,不收斂了。具體可見下圖。

把一些參數打出來了,可以看到,負值和正值絕對值都在變大,因為迭代后出現折線發散。

修改后的jupyter的文件鏈接

好了,今天就到這里了,希望對學習理解有幫助,大神看見勿噴,僅為自己的學習理解,能力有限,請多包涵。

總結

以上是生活随笔為你收集整理的图解深度学习-梯度下降学习率可视化的全部內容,希望文章能夠幫你解決所遇到的問題。

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