女人荫蒂被添全过程13种图片,亚洲+欧美+在线,欧洲精品无码一区二区三区 ,在厨房拨开内裤进入毛片

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

PyTorch教程-5.3. 前向傳播、反向傳播和計(jì)算圖

jf_pJlTbmA9 ? 來源:PyTorch ? 作者:PyTorch ? 2023-06-05 15:43 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

到目前為止,我們已經(jīng)用小批量隨機(jī)梯度下降訓(xùn)練了我們的模型。然而,當(dāng)我們實(shí)現(xiàn)該算法時(shí),我們只擔(dān)心通過模型進(jìn)行前向傳播所涉及的計(jì)算。當(dāng)需要計(jì)算梯度時(shí),我們只是調(diào)用了深度學(xué)習(xí)框架提供的反向傳播函數(shù)。

梯度的自動(dòng)計(jì)算(自動(dòng)微分)大大簡(jiǎn)化了深度學(xué)習(xí)算法的實(shí)現(xiàn)。在自動(dòng)微分之前,即使是對(duì)復(fù)雜模型的微小改動(dòng)也需要手動(dòng)重新計(jì)算復(fù)雜的導(dǎo)數(shù)。令人驚訝的是,學(xué)術(shù)論文常常不得不分配大量頁面來推導(dǎo)更新規(guī)則。雖然我們必須繼續(xù)依賴自動(dòng)微分,以便我們可以專注于有趣的部分,但如果您想超越對(duì)深度學(xué)習(xí)的膚淺理解,您應(yīng)該知道這些梯度是如何在底層計(jì)算的。

在本節(jié)中,我們將深入探討反向傳播(通常稱為反向傳播)的細(xì)節(jié)。為了傳達(dá)對(duì)技術(shù)及其實(shí)現(xiàn)的一些見解,我們依賴于一些基本的數(shù)學(xué)和計(jì)算圖。首先,我們將重點(diǎn)放在具有權(quán)重衰減的單隱藏層 MLP 上(?2 正則化,將在后續(xù)章節(jié)中描述)。

5.3.1. 前向傳播

前向傳播(或forward pass)是指神經(jīng)網(wǎng)絡(luò)從輸入層到輸出層依次計(jì)算和存儲(chǔ)中間變量(包括輸出)。我們現(xiàn)在逐步了解具有一個(gè)隱藏層的神經(jīng)網(wǎng)絡(luò)的機(jī)制。這可能看起來很乏味,但用放克演奏家詹姆斯布朗的永恒名言來說,你必須“付出代價(jià)才能成為老板”。

為了簡(jiǎn)單起見,我們假設(shè)輸入示例是 x∈Rd并且我們的隱藏層不包含偏差項(xiàng)。這里的中間變量是:

(5.3.1)z=W(1)x,

在哪里W(1)∈Rh×d是隱藏層的權(quán)重參數(shù)。運(yùn)行中間變量后 z∈Rh通過激活函數(shù) ?我們獲得了長(zhǎng)度的隱藏激活向量h,

(5.3.2)h=?(z).

隱藏層輸出h也是一個(gè)中間變量。假設(shè)輸出層的參數(shù)只具有權(quán)重W(2)∈Rq×h,我們可以獲得一個(gè)輸出層變量,其向量長(zhǎng)度為q:

(5.3.3)o=W(2)h.

假設(shè)損失函數(shù)是l示例標(biāo)簽是 y,然后我們可以計(jì)算單個(gè)數(shù)據(jù)示例的損失項(xiàng),

(5.3.4)L=l(o,y).

根據(jù)定義?2我們稍后將介紹的正則化,給定超參數(shù)λ,正則化項(xiàng)是

(5.3.5)s=λ2(‖W(1)‖F(xiàn)2+‖W(2)‖F(xiàn)2),

其中矩陣的 Frobenius 范數(shù)就是?2將矩陣展平為向量后應(yīng)用范數(shù)。最后,模型在給定數(shù)據(jù)示例上的正則化損失為:

(5.3.6)J=L+s.

我們指的是J作為下面討論中的目標(biāo)函數(shù)。

5.3.2. 前向傳播的計(jì)算圖

繪制計(jì)算圖有助于我們可視化計(jì)算中運(yùn)算符和變量的依賴關(guān)系。圖 5.3.1 包含與上述簡(jiǎn)單網(wǎng)絡(luò)相關(guān)的圖形,其中方塊表示變量,圓圈表示運(yùn)算符。左下角表示輸入,右上角表示輸出。請(qǐng)注意箭頭的方向(說明數(shù)據(jù)流)主要是向右和向上。

poYBAGR9NK6AJFQWAACGowUha5Y731.svg

圖 5.3.1前向傳播計(jì)算圖。

5.3.3. 反向傳播

反向傳播是指計(jì)算神經(jīng)網(wǎng)絡(luò)參數(shù)梯度的方法。簡(jiǎn)而言之,該方法根據(jù)微 積分的鏈?zhǔn)椒▌t以相反的順序遍歷網(wǎng)絡(luò),從輸出層到輸入層。該算法存儲(chǔ)計(jì)算某些參數(shù)的梯度時(shí)所需的任何中間變量(偏導(dǎo)數(shù))。假設(shè)我們有函數(shù) Y=f(X)和Z=g(Y), 其中輸入和輸出 X,Y,Z是任意形狀的張量。通過使用鏈?zhǔn)椒▌t,我們可以計(jì)算導(dǎo)數(shù) Z關(guān)于X通過

(5.3.7)?Z?X=prod(?Z?Y,?Y?X).

在這里我們使用prod運(yùn)算符在執(zhí)行必要的操作(例如轉(zhuǎn)置和交換輸入位置)后將其參數(shù)相乘。對(duì)于向量,這很簡(jiǎn)單:它只是矩陣-矩陣乘法。對(duì)于更高維的張量,我們使用適當(dāng)?shù)膶?duì)應(yīng)物。運(yùn)營(yíng)商 prod隱藏所有符號(hào)開銷。

回想一下,具有一個(gè)隱藏層的簡(jiǎn)單網(wǎng)絡(luò)的參數(shù),其計(jì)算圖如圖 5.3.1所示,是 W(1)和W(2). 反向傳播的目的是計(jì)算梯度 ?J/?W(1)和 ?J/?W(2). 為此,我們應(yīng)用鏈?zhǔn)椒▌t并依次計(jì)算每個(gè)中間變量和參數(shù)的梯度。計(jì)算的順序相對(duì)于前向傳播中執(zhí)行的順序是相反的,因?yàn)槲覀冃枰獜挠?jì)算圖的結(jié)果開始并朝著參數(shù)的方向努力。第一步是計(jì)算目標(biāo)函數(shù)的梯度J=L+s關(guān)于損失期限 L和正則化項(xiàng)s.

(5.3.8)?J?L=1and?J?s=1.

接下來,我們計(jì)算目標(biāo)函數(shù)相對(duì)于輸出層變量的梯度o根據(jù)鏈?zhǔn)椒▌t:

(5.3.9)?J?o=prod(?J?L,?L?o)=?L?o∈Rq.

接下來,我們計(jì)算關(guān)于兩個(gè)參數(shù)的正則化項(xiàng)的梯度:

(5.3.10)?s?W(1)=λW(1)and?s?W(2)=λW(2).

現(xiàn)在我們可以計(jì)算梯度了 ?J/?W(2)∈Rq×h 最接近輸出層的模型參數(shù)。使用鏈?zhǔn)揭?guī)則產(chǎn)生:

(5.3.11)?J?W(2)=prod(?J?o,?o?W(2))+prod(?J?s,?s?W(2))=?J?oh?+λW(2).

獲得關(guān)于的梯度W(1)我們需要繼續(xù)沿著輸出層反向傳播到隱藏層。關(guān)于隱藏層輸出的梯度 ?J/?h∈Rh是(誰)給的

(5.3.12)?J?h=prod(?J?o,?o?h)=W(2)??J?o.

由于激活函數(shù)?按元素應(yīng)用,計(jì)算梯度 ?J/?z∈Rh中間變量的z要求我們使用逐元素乘法運(yùn)算符,我們用⊙:

(5.3.13)?J?z=prod(?J?h,?h?z)=?J?h⊙?′(z).

最后,我們可以得到梯度 ?J/?W(1)∈Rh×d 最接近輸入層的模型參數(shù)。根據(jù)鏈?zhǔn)椒▌t,我們得到

(5.3.14)?J?W(1)=prod(?J?z,?z?W(1))+prod(?J?s,?s?W(1))=?J?zx?+λW(1).

5.3.4. 訓(xùn)練神經(jīng)網(wǎng)絡(luò)

在訓(xùn)練神經(jīng)網(wǎng)絡(luò)時(shí),前向傳播和反向傳播相互依賴。特別是,對(duì)于前向傳播,我們沿依賴方向遍歷計(jì)算圖并計(jì)算其路徑上的所有變量。然后將這些用于反向傳播,其中圖上的計(jì)算順序是相反的。

以前述簡(jiǎn)單網(wǎng)絡(luò)為例進(jìn)行說明。一方面,在前向傳播過程中計(jì)算正則化項(xiàng)(5.3.5) 取決于模型參數(shù)的當(dāng)前值W(1)和W(2). 它們由優(yōu)化算法根據(jù)最近一次迭代中的反向傳播給出。另一方面,反向傳播過程中參數(shù)(5.3.11)的梯度計(jì)算取決于隱藏層輸出的當(dāng)前值h,這是由前向傳播給出的。

因此在訓(xùn)練神經(jīng)網(wǎng)絡(luò)時(shí),在初始化模型參數(shù)后,我們交替進(jìn)行正向傳播和反向傳播,使用反向傳播給出的梯度更新模型參數(shù)。請(qǐng)注意,反向傳播會(huì)重用前向傳播中存儲(chǔ)的中間值以避免重復(fù)計(jì)算。結(jié)果之一是我們需要保留中間值,直到反向傳播完成。這也是為什么訓(xùn)練比普通預(yù)測(cè)需要更多內(nèi)存的原因之一。此外,這些中間值的大小大致與網(wǎng)絡(luò)層數(shù)和批量大小成正比。因此,使用更大的批量大小訓(xùn)練更深的網(wǎng)絡(luò)更容易導(dǎo)致內(nèi)存不足錯(cuò)誤。

5.3.5. 概括

前向傳播在神經(jīng)網(wǎng)絡(luò)定義的計(jì)算圖中順序計(jì)算和存儲(chǔ)中間變量。它從輸入層進(jìn)行到輸出層。反向傳播以相反的順序順序計(jì)算并存儲(chǔ)神經(jīng)網(wǎng)絡(luò)中中間變量和參數(shù)的梯度。在訓(xùn)練深度學(xué)習(xí)模型時(shí),正向傳播和反向傳播是相互依賴的,訓(xùn)練需要的內(nèi)存明顯多于預(yù)測(cè)。

5.3.6. 練習(xí)

假設(shè)輸入X一些標(biāo)量函數(shù) f是n×m矩陣。梯度的維數(shù)是多少f關(guān)于X?

向本節(jié)中描述的模型的隱藏層添加偏差(您不需要在正則化項(xiàng)中包含偏差)。

畫出相應(yīng)的計(jì)算圖。

推導(dǎo)前向和反向傳播方程。

計(jì)算本節(jié)中描述的模型中訓(xùn)練和預(yù)測(cè)的內(nèi)存占用量。

假設(shè)您要計(jì)算二階導(dǎo)數(shù)。計(jì)算圖會(huì)發(fā)生什么變化?您預(yù)計(jì)計(jì)算需要多長(zhǎng)時(shí)間?

假設(shè)計(jì)算圖對(duì)于您的 GPU 來說太大了。

您可以將它分區(qū)到多個(gè) GPU 上嗎?

與在較小的 minibatch 上進(jìn)行訓(xùn)練相比,優(yōu)缺點(diǎn)是什么?

審核編輯黃宇

Discussions

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • pytorch
    +關(guān)注

    關(guān)注

    2

    文章

    809

    瀏覽量

    13881
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    反向傳播如何實(shí)現(xiàn)

    實(shí)現(xiàn)反向傳播
    發(fā)表于 07-09 16:10

    【AI 學(xué)習(xí)】第六篇--講解BP(反向傳播)流程

    反向傳播整個(gè)流程如下:(1)進(jìn)行前傳播計(jì)算,利用
    發(fā)表于 11-05 17:25

    解讀多層神經(jīng)網(wǎng)絡(luò)反向傳播原理

    要訓(xùn)練神經(jīng)網(wǎng)絡(luò),我們需要“訓(xùn)練數(shù)據(jù)集”。訓(xùn)練數(shù)據(jù)集是由對(duì)應(yīng)目標(biāo)z(期望輸出)的輸入信號(hào)(x_1和 x_2)組成。神經(jīng)網(wǎng)絡(luò)的訓(xùn)練是一個(gè)迭代過程。在每個(gè)迭代中,使用來自訓(xùn)練數(shù)據(jù)集的新數(shù)據(jù)修改網(wǎng)絡(luò)節(jié)點(diǎn)的加權(quán)系數(shù)。整個(gè)迭代由計(jì)算
    發(fā)表于 10-18 18:20 ?8830次閱讀
    解讀多層神經(jīng)網(wǎng)絡(luò)<b class='flag-5'>反向</b><b class='flag-5'>傳播</b>原理

    手動(dòng)設(shè)計(jì)一個(gè)卷積神經(jīng)網(wǎng)絡(luò)(傳播反向傳播

    本文主要寫卷積神經(jīng)網(wǎng)絡(luò)如何進(jìn)行一次完整的訓(xùn)練,包括傳播反向傳播,并自己手寫一個(gè)卷積神經(jīng)網(wǎng)絡(luò)。
    的頭像 發(fā)表于 05-28 10:35 ?1.8w次閱讀
    手動(dòng)設(shè)計(jì)一個(gè)卷積神經(jīng)網(wǎng)絡(luò)(<b class='flag-5'>前</b><b class='flag-5'>向</b><b class='flag-5'>傳播</b>和<b class='flag-5'>反向</b><b class='flag-5'>傳播</b>)

    人工智能(AI)學(xué)習(xí):如何講解BP(反向傳播)流程

    關(guān)于BP知乎上的解釋是這樣的,反向傳播整個(gè)流程如下: 1)進(jìn)行前傳播計(jì)算,利用
    發(fā)表于 11-03 16:55 ?0次下載
    人工智能(AI)學(xué)習(xí):如何講解BP(<b class='flag-5'>反向</b><b class='flag-5'>傳播</b>)流程

    淺析深度神經(jīng)網(wǎng)絡(luò)(DNN)反向傳播算法(BP)

    在 深度神經(jīng)網(wǎng)絡(luò)(DNN)模型與傳播算法 中,我們對(duì)DNN的模型和傳播算法做了總結(jié),這里
    的頭像 發(fā)表于 03-22 16:28 ?3966次閱讀
    淺析深度神經(jīng)網(wǎng)絡(luò)(DNN)<b class='flag-5'>反向</b><b class='flag-5'>傳播</b>算法(BP)

    PyTorch教程5.3之前傳播反向傳播計(jì)算

    電子發(fā)燒友網(wǎng)站提供《PyTorch教程5.3之前傳播反向傳播
    發(fā)表于 06-05 15:36 ?0次下載
    <b class='flag-5'>PyTorch</b>教程<b class='flag-5'>5.3</b>之前<b class='flag-5'>向</b><b class='flag-5'>傳播</b>、<b class='flag-5'>反向</b><b class='flag-5'>傳播</b>和<b class='flag-5'>計(jì)算</b><b class='flag-5'>圖</b>

    PyTorch教程之時(shí)間反向傳播

    電子發(fā)燒友網(wǎng)站提供《PyTorch教程之時(shí)間反向傳播.pdf》資料免費(fèi)下載
    發(fā)表于 06-05 09:49 ?0次下載
    <b class='flag-5'>PyTorch</b>教程之時(shí)間<b class='flag-5'>反向</b><b class='flag-5'>傳播</b>

    PyTorch教程-9.7. 時(shí)間反向傳播

    大量現(xiàn)代 RNN 架構(gòu)之前,讓我們仔細(xì)看看反向傳播在數(shù)學(xué)細(xì)節(jié)中是如何在序列模型中工作的。希望這個(gè)討論能使梯度消失和爆炸的概念更加精確。如果你還記得我們?cè)? 5.3 節(jié)介紹 MLP 時(shí)通過計(jì)算
    的頭像 發(fā)表于 06-05 15:44 ?633次閱讀
    <b class='flag-5'>PyTorch</b>教程-9.7. 時(shí)間<b class='flag-5'>反向</b><b class='flag-5'>傳播</b>

    神經(jīng)網(wǎng)絡(luò)傳播反向傳播區(qū)別

    神經(jīng)網(wǎng)絡(luò)是一種強(qiáng)大的機(jī)器學(xué)習(xí)模型,廣泛應(yīng)用于各種領(lǐng)域,如圖像識(shí)別、語音識(shí)別、自然語言處理等。神經(jīng)網(wǎng)絡(luò)的核心是傳播反向傳播算法。本文將詳
    的頭像 發(fā)表于 07-02 14:18 ?1454次閱讀

    神經(jīng)網(wǎng)絡(luò)傳播反向傳播在神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程中的作用

    神經(jīng)網(wǎng)絡(luò)是一種強(qiáng)大的機(jī)器學(xué)習(xí)模型,它通過模擬人腦神經(jīng)元的連接方式來處理復(fù)雜的數(shù)據(jù)。神經(jīng)網(wǎng)絡(luò)的核心是傳播反向傳播算法。本文將詳細(xì)介紹神經(jīng)
    的頭像 發(fā)表于 07-03 11:11 ?2524次閱讀

    神經(jīng)網(wǎng)絡(luò)反向傳播算法的推導(dǎo)過程

    反向傳播算法的推導(dǎo)過程,包括傳播、損失函數(shù)、梯度計(jì)算和權(quán)重更新等步驟。
    的頭像 發(fā)表于 07-03 11:13 ?1027次閱讀

    神經(jīng)網(wǎng)絡(luò)反向傳播算法的優(yōu)缺點(diǎn)有哪些

    神經(jīng)網(wǎng)絡(luò)反向傳播算法(Backpropagation Algorithm)是一種廣泛應(yīng)用于深度學(xué)習(xí)和機(jī)器學(xué)習(xí)領(lǐng)域的優(yōu)化算法,用于訓(xùn)練多層饋神經(jīng)網(wǎng)絡(luò)。本文將介紹反向
    的頭像 發(fā)表于 07-03 11:24 ?2000次閱讀

    【每天學(xué)點(diǎn)AI】傳播、損失函數(shù)、反向傳播

    在深度學(xué)習(xí)的領(lǐng)域中,傳播反向傳播和損失函數(shù)是構(gòu)建和訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型的三個(gè)核心概念。今天,小編將通過一個(gè)簡(jiǎn)單的實(shí)例,解釋這三個(gè)概念,并展
    的頭像 發(fā)表于 11-15 10:32 ?1190次閱讀
    【每天學(xué)點(diǎn)AI】<b class='flag-5'>前</b><b class='flag-5'>向</b><b class='flag-5'>傳播</b>、損失函數(shù)、<b class='flag-5'>反向</b><b class='flag-5'>傳播</b>

    什么是BP神經(jīng)網(wǎng)絡(luò)的反向傳播算法

    神經(jīng)網(wǎng)絡(luò)(即反向傳播神經(jīng)網(wǎng)絡(luò))的核心,它建立在梯度下降法的基礎(chǔ)上,是一種適合于多層神經(jīng)元網(wǎng)絡(luò)的學(xué)習(xí)算法。該算法通過計(jì)算每層網(wǎng)絡(luò)的誤差,并將這些誤差反向
    的頭像 發(fā)表于 02-12 15:18 ?720次閱讀
    主站蜘蛛池模板: 马边| 同江市| 白玉县| 菏泽市| 区。| 武陟县| 张掖市| 平遥县| 白玉县| 阿勒泰市| 丰城市| 博湖县| 乌兰县| 桦甸市| 七台河市| 漳平市| 徐闻县| 潼南县| 青川县| 筠连县| 福泉市| 平塘县| 长岛县| 嘉祥县| 嵊州市| 二连浩特市| 临夏市| 弥勒县| 南雄市| 平江县| 栖霞市| 平陆县| 简阳市| 赤壁市| 灵璧县| 多伦县| 平泉县| 上犹县| 安新县| 湘乡市| 依安县|