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

歡迎訪問 生活随笔!

生活随笔

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

pytorch

3.5 向量化实现的解释-深度学习-Stanford吴恩达教授

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

←上一篇↓↑下一篇→
3.4 多個例子中的向量化回到目錄3.6 激活函數

向量化實現的解釋 (Explanation for Vectorized Implementation)

在上一個視頻中,我們學習到如何將多個訓練樣本橫向堆疊成一個矩陣 XXX ,然后就可以推導出神經網絡中前向傳播(forward propagation)部分的向量化實現。

在這個視頻中,我們將會繼續了解到,為什么上一節中寫下的公式就是將多個樣本向量化的正確實現。

我們先手動對幾個樣本計算一下前向傳播,看看有什么規律: 公式3.16:

z[1](1)=W[1]x(1)+b[1]z[1](2)=W[1]x(2)+b[1]z[1](3)=W[1]x(3)+b[1]z^{[1](1)}=W^{[1]}x^{(1)}+b^{[1]}\\ z^{[1](2)}=W^{[1]}x^{(2)}+b^{[1]}\\ z^{[1](3)}=W^{[1]}x^{(3)}+b^{[1]}\\ z[1](1)=W[1]x(1)+b[1]z[1](2)=W[1]x(2)+b[1]z[1](3)=W[1]x(3)+b[1]

這里,為了描述的簡便,我們先忽略掉 b[1]b^{[1]}b[1] 后面你將會看到利用Python 的廣播機制,可以很容易的將 b[1]b^{[1]}b[1] 加進來。

現在 W[1]W^{[1]}W[1] 是一個矩陣, x(1),x(2),x(3)x^{(1)},x^{(2)},x^{(3)}x(1),x(2),x(3) 都是列向量,矩陣乘以列向量得到列向量,下面將它們用圖形直觀的表示出來: 公式3.17:

W[1]x=[???][????x(1)x(2)x(3)?????]=[????w(1)x(1)w(1)x(2)w(1)x(3)?????]=[????z[1](1)z[1](2)z[1](3)?????]=Z[1]W^{[1]}x= \left[\begin{matrix} \cdots\\ \cdots\\ \cdots\\ \end{matrix}\right] \left[\begin{matrix} \vdots & \vdots & \vdots & \vdots\\ x^{(1)} & x^{(2)} & x^{(3)} & \vdots\\ \vdots & \vdots & \vdots & \vdots\\ \end{matrix}\right]= \left[\begin{matrix} \vdots & \vdots & \vdots & \vdots\\ w^{(1)}x^{(1)} & w^{(1)}x^{(2)} & w^{(1)}x^{(3)} & \vdots\\ \vdots & \vdots & \vdots & \vdots\\ \end{matrix}\right]=\\ \left[\begin{matrix} \vdots & \vdots & \vdots & \vdots\\ z^{[1](1)} & z^{[1](2)} & z^{[1](3)} & \vdots\\ \vdots & \vdots & \vdots & \vdots\\ \end{matrix}\right] = Z^{[1]}W[1]x=?????????????????x(1)???x(2)???x(3)????????????=???????w(1)x(1)???w(1)x(2)???w(1)x(3)????????????=???????z[1](1)???z[1](2)???z[1](3)????????????=Z[1]

視頻中,吳恩達老師很細心的用不同的顏色表示不同的樣本向量,及其對應的輸出。所以從圖中可以看出,當加入更多樣本時,只需向矩陣 XXX 中加入更多列。

所以從這里我們也可以了解到,為什么之前我們對單個樣本的計算要寫成 z[1](i)=W[1]x(i)+b[1]z^{[1](i)}=W^{[1]}x^{(i)}+b^{[1]}z[1](i)=W[1]x(i)+b[1] 這種形式,因為當有不同的訓練樣本時,將它們堆到矩陣 XXX 的各列中,那么它們的輸出也就會相應的堆疊到矩陣 Z[1]Z^{[1]}Z[1] 的各列中。現在我們就可以直接計算矩陣 Z[1]Z^{[1]}Z[1] 加上 b[1]b^{[1]}b[1] ,因為列向量 b[1]b^{[1]}b[1] 和矩陣 Z[1]Z^{[1]}Z[1] 的列向量有著相同的尺寸,而Python的廣播機制對于這種矩陣與向量直接相加的處理方式是,將向量與矩陣的每一列相加。 所以這一節只是說明了為什么公式 Z[1]=W[1]X+b[1]Z^{[1]}=W^{[1]}X+b^{[1]}Z[1]=W[1]X+b[1] 是前向傳播的第一步計算的正確向量化實現,但事實證明,類似的分析可以發現,前向傳播的其它步也可以使用非常相似的邏輯,即如果將輸入按列向量橫向堆疊進矩陣,那么通過公式計算之后,也能得到成列堆疊的輸出。

最后,對這一段視頻的內容做一個總結:

由公式3.12、公式3.13、公式3.14、公式3.15可以看出,使用向量化的方法,可以不需要顯示循環,而直接通過矩陣 XXX 運算從就可以計算出 A[1]A^{[1]}A[1] ,實際上 XXX 可以記為 A[0]A^{[0]}A[0] ,使用同樣的方法就可以由神經網絡中的每一層的輸入 A[i?1]A^{[i-1]}A[i?1] 計算輸出 A[i]A^{[i]}A[i] 。其實這些方程有一定對稱性,其中第一個方程也可以寫成 Z[1]=W[1]A[0]+b[1]Z^{[1]}=W^{[1]}A^{[0]}+b^{[1]}Z[1]=W[1]A[0]+b[1] ,你看這對方程,還有這對方程形式其實很類似,只不過這里所有指標加了1。所以這樣就顯示出神經網絡的不同層次,你知道大概每一步做的都是一樣的,或者只不過同樣的計算不斷重復而已。這里我們有一個雙層神經網絡,我們在下周視頻里會講深得多的神經網絡,你看到隨著網絡的深度變大,基本上也還是重復這兩步運算,只不過是比這里你看到的重復次數更多。在下周的視頻中將會講解更深層次的神經網絡,隨著層數的加深,基本上也還是重復同樣的運算。

以上就是對神經網絡向量化實現的正確性的解釋,到目前為止,我們僅使用sigmoid函數作為激活函數,事實上這并非最好的選擇,在下一個視頻中,將會繼續深入的講解如何使用更多不同種類的激活函數。

課程板書




←上一篇↓↑下一篇→
3.4 多個例子中的向量化回到目錄3.6 激活函數

總結

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

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