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

歡迎訪問 生活随笔!

生活随笔

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

pytorch

2.12 向量化更多例子-深度学习-Stanford吴恩达教授

發布時間:2025/4/5 pytorch 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2.12 向量化更多例子-深度学习-Stanford吴恩达教授 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

←上一篇↓↑下一篇→
2.11 向量化回到目錄2.13 向量化 Logistic 回歸

向量化更多例子 (More Vectorization Examples)

從上節視頻中,你知道了怎樣通過numpy內置函數和避開顯式的循環(loop)的方式進行向量化,從而有效提高代碼速度。

經驗提醒我,當我們在寫神經網絡程序時,或者在寫邏輯(logistic)回歸,或者其他神經網絡模型時,應該避免寫循環(loop)語句。雖然有時寫循環(loop)是不可避免的,但是我們可以使用比如numpy的內置函數或者其他辦法去計算。當你這樣使用后,程序效率總是快于循環(loop)。

讓我們看另外一個例子。如果你想計算向量 u=Avu=Avu=Av ,這時矩陣乘法定義為,矩陣乘法的定義就是: ui=∑jAijviu_i=\sum_jA_{ij}v_iui?=j?Aij?vi? ,這取決于你怎么定義 uiu_iui? 值。同樣使用非向量化實現, u=np.zeros(n,1)u=np.zeros(n,1)u=np.zeros(n,1) , 并且通過兩層循環 for(i):for(j):for(i):for(j):for(i):for(j): ,得到 u[i]=u[i]+A[i][j]?v[j]u[i]=u[i]+A[i][j]*v[j]u[i]=u[i]+A[i][j]?v[j] 。現在就有了 iiijjj 的兩層循環,這就是非向量化。向量化方式就可以用 u=np.dot(A,v)u=np.dot(A,v)u=np.dot(A,v) ,右邊這種向量化實現方式,消除了兩層循環使得代碼運行速度更快。

下面通過另一個例子繼續了解向量化。如果你已經有一個向量 vvv ,并且想要對向量 vvv 的每個元素做指數操作,得到向量 uuu 等于 eeev1v_1v1?eeev2v_2v2? ,一直到 eeevnv_nvn? 次方。這里是非向量化的實現方式,首先你初始化了向量 u=np.zeros(n,1)u=np.zeros(n,1)u=np.zeros(n,1) ,并且通過循環依次計算每個元素。但事實證明可以通過pythonnumpy內置函數,幫助你計算這樣的單個函數。所以我會引入import numpy as np,執行 u=np.exp(v)u=np.exp(v)u=np.exp(v) 命令。注意到,在之前有循環的代碼中,這里僅用了一行代碼,向量 vvv 作為輸入, uuu 作為輸出。你已經知道為什么需要循環,并且通過右邊代碼實現,效率會明顯的快于循環方式。

事實上,numpy庫有很多向量函數。比如 u=np.log是計算對數函數(logloglog)、 np.abs() 是計算數據的絕對值、np.maximum() 計算元素 yyy 中的最大值,你也可以 np.maximum(v,0) 、 v??2v**2v??2 代表獲得元素 yyy 每個值得平方、 1v\frac1vv1? 獲取元素 yyy 的倒數等等。所以當你想寫循環時候,檢查numpy是否存在類似的內置函數,從而避免使用循環(loop)方式。

那么,將剛才所學到的內容,運用在邏輯回歸的梯度下降上,看看我們是否能簡化兩個計算過程中的某一步。這是我們邏輯回歸的求導代碼,有兩層循環。在這例子我們有 nnn 個特征值。如果你有超過兩個特征時,需要循環 dw1dw_1dw1?dw2dw_2dw2? 、 dw3dw_3dw3? 等等。所以 jjj 的實際值是1、2 和 nxn_xnx? ,就是你想要更新的值。所以我們想要消除第二循環,在這一行,這樣我們就不用初始化 dw1dw_1dw1?dw2dw_2dw2? 都等于0。去掉這些,而是定義 dwdwdw 為一個向量,設置 u=np.zeros(n(x),1)u=np.zeros(n(x),1)u=np.zeros(n(x),1) 。定義了一個 xxx 行的一維向量,從而替代循環。我們僅僅使用了一個向量操作 dw=dw+x(i)dz(i)dw=dw+x^{(i)}dz^{(i)}dw=dw+x(i)dz(i) 。最后,我們得到 dw=dw/mdw=dw/mdw=dw/m 。現在我們通過將兩層循環轉成一層循環,我們仍然還有這個循環訓練樣本。

希望這個視頻給了你一點向量化感覺,減少一層循環使你代碼更快,但事實證明我們能做得更好。所以在下個視頻,我們將進一步的講解邏輯回歸,你將會看到更好的監督學習結果。在訓練中不需要使用任何 for 循環,你也可以寫出代碼去運行整個訓練集。到此為止一切都好,讓我們看下一個視頻。

課程PPT





←上一篇↓↑下一篇→
2.11 向量化回到目錄2.13 向量化 Logistic 回歸

總結

以上是生活随笔為你收集整理的2.12 向量化更多例子-深度学习-Stanford吴恩达教授的全部內容,希望文章能夠幫你解決所遇到的問題。

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