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

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

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

在PyTorch中使用ReLU激活函數(shù)的例子

給予聽風(fēng) ? 來源:給予聽風(fēng) ? 作者:給予聽風(fēng) ? 2022-07-06 15:27 ? 次閱讀

PyTorch已為我們實現(xiàn)了大多數(shù)常用的非線性激活函數(shù),我們可以像使用任何其他的層那樣使用它們。讓我們快速看一個在PyTorch中使用ReLU激活函數(shù)的例子:

在上面這個例子中,輸入是包含兩個正值、兩個負(fù)值的張量,對其調(diào)用ReLU函數(shù),負(fù)值將取為0,正值則保持不變。

現(xiàn)在我們已經(jīng)了解了構(gòu)建神經(jīng)網(wǎng)絡(luò)架構(gòu)的大部分細(xì)節(jié),我們來構(gòu)建一個可用于解決真實問題的深度學(xué)習(xí)架構(gòu)。上一章中,我們使用了簡單的方法,因而可以只關(guān)注深度學(xué)習(xí)算法如何工作。后面將不再使用這種方式構(gòu)建架構(gòu),而是使用PyTorch中正常該用的方式構(gòu)建。

1.PyTorch構(gòu)建深度學(xué)習(xí)算法的方式

PyTorch中所有網(wǎng)絡(luò)都實現(xiàn)為類,創(chuàng)建PyTorch類的子類要調(diào)用nn.Module,并實現(xiàn)__init__和forward方法。在init方法中初始化層,這一點已在前一節(jié)講過。在forward方法中,把輸入數(shù)據(jù)傳給init方法中初始化的層,并返回最終的輸出。非線性函數(shù)經(jīng)常被forward函數(shù)直接使用,init方法也會使用一些。下面的代碼片段展示了深度學(xué)習(xí)架構(gòu)是如何用PyTrorch實現(xiàn)的:

如果你是Python新手,上述代碼可能會比較難懂,但它全部要做的就是繼承一個父類,并實現(xiàn)父類中的兩個方法。在Python中,我們通過將父類的名字作為參數(shù)傳入來創(chuàng)建子類。init方法相當(dāng)于Python中的構(gòu)造器,super方法用于將子類的參數(shù)傳給父類,我們的例子中父類就是nn.Module。

2.不同機器學(xué)習(xí)問題的模型架構(gòu)

待解決的問題種類將基本決定我們將要使用的層,處理序列化數(shù)據(jù)問題的模型從線性層開始,一直到長短期記憶(LSTM)層?;谝鉀Q的問題類別,最后一層是確定的。使用機器學(xué)習(xí)或深度學(xué)習(xí)算法解決的問題通常有三類,最后一層的情況通常如下。

·對于回歸問題,如預(yù)測T恤衫的銷售價格,最后使用的是有一個輸出的線性層,輸出值為連續(xù)的。

·將一張給定的圖片歸類為T恤衫或襯衫,用到的是sigmoid激活函數(shù),因為它的輸出值不是接近1就是接近0,這種問題通常稱為二分類問題。

·對于多類別分類問題,如必須把給定的圖片歸類為T恤、牛仔褲、襯衫或連衣裙,網(wǎng)絡(luò)最后將使用softmax層。讓我們拋開數(shù)學(xué)原理來直觀理解softmax的作用。舉例來說,它從前一線性層獲取輸入,并輸出給定數(shù)量樣例上的概率。在我們的例子中,將訓(xùn)練它預(yù)測每個圖片類別的4種概率。記住,所有概率相加的總和必然為1。

3.損失函數(shù)

一旦定義好了網(wǎng)絡(luò)架構(gòu),還剩下最重要的兩步。一步是評估網(wǎng)絡(luò)執(zhí)行特定的回歸或分類任務(wù)時表現(xiàn)的優(yōu)異程度,另一步是優(yōu)化權(quán)重。

優(yōu)化器(梯度下降)通常接受一個標(biāo)量值,因而loss函數(shù)應(yīng)生成一個標(biāo)量值,并使其在訓(xùn)練期間最小化。某些用例,如預(yù)測道路上障礙物的位置并判斷是否為行人,將需要兩個或更多損失函數(shù)。即使在這樣的場景下,我們也需要把損失組合成一個優(yōu)化器可以最小化的標(biāo)量。最后一章將詳細(xì)討論把多個損失值組合成一個標(biāo)量的真實例子。

上一章中,我們定義了自己的loss函數(shù)。PyTorch提供了經(jīng)常使用的loss函數(shù)的實現(xiàn)。我們看看回歸和分類問題的loss函數(shù)。

回歸問題經(jīng)常使用的loss函數(shù)是均方誤差(MSE)。它和前面一章實現(xiàn)的loss函數(shù)相同??梢允褂肞yTorch中實現(xiàn)的loss函數(shù),如下所示:

對于分類問題,我們使用交叉熵?fù)p失函數(shù)。在介紹交叉熵的數(shù)學(xué)原理之前,先了解下交叉熵?fù)p失函數(shù)做的事情。它計算用于預(yù)測概率的分類網(wǎng)絡(luò)的損失值,損失總和應(yīng)為1,就像softmax層一樣。當(dāng)預(yù)測概率相對正確概率發(fā)散時,交叉熵?fù)p失增加。例如,如果我們的分類算法對圖3.5為貓的預(yù)測概率值為0.1,而實際上這是只熊貓,那么交叉熵?fù)p失就會更高。如果預(yù)測的結(jié)果和真實標(biāo)簽相近,那么交叉熵?fù)p失就會更低。

圖3.5

下面是用Python代碼實現(xiàn)這種場景的例子。

為了在分類問題中使用交叉熵?fù)p失,我們真得不需要擔(dān)心內(nèi)部發(fā)生的事情——只要記住,預(yù)測差時損失值高,預(yù)測好時損失值低。PyTorch提供了loss函數(shù)的實現(xiàn),可以按照如下方式使用。

PyTorch包含的其他一些loss函數(shù)如表3.1所示。

表3.1

L1 loss

通常作為正則化器使用;第4章將進(jìn)一步講述

MSE loss

均方誤差損失,用于回歸問題的損失函數(shù)

Cross-entropy loss

交叉熵?fù)p失,用于二分類和多類別分類問題

NLL Loss

用于分類問題,允許用戶使用特定的權(quán)重處理不平衡數(shù)據(jù)集

NLL Loss2d

用于像素級分類,通常和圖像分割問題有關(guān)

4.優(yōu)化網(wǎng)絡(luò)架構(gòu)

計算出網(wǎng)絡(luò)的損失之后,需要優(yōu)化權(quán)重以減少損失,并改善算法準(zhǔn)確率。簡單起見,讓我們看看作為黑盒的優(yōu)化器,它們接受損失函數(shù)和所有的學(xué)習(xí)參數(shù),并微量調(diào)整來改善網(wǎng)絡(luò)性能。PyTorch提供了深度學(xué)習(xí)中經(jīng)常用到的大多數(shù)優(yōu)化器。如果大家想研究這些優(yōu)化器內(nèi)部的動作,了解其數(shù)學(xué)原理,強烈建議瀏覽以下博客:

PyTorch提供的一些常用的優(yōu)化器如下:

·ADADELTA

·Adagrad

·Adam

·SparseAdam

·Adamax

·ASGD

·LBFGS

·RMSProp

·Rprop

·SGD

最后歡迎大家一起討論,共同進(jìn)步,共同學(xué)習(xí)

審核編輯:湯梓紅

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

    關(guān)注

    3

    文章

    4277

    瀏覽量

    62323
  • python
    +關(guān)注

    關(guān)注

    55

    文章

    4767

    瀏覽量

    84375
  • pytorch
    +關(guān)注

    關(guān)注

    2

    文章

    802

    瀏覽量

    13115
收藏 人收藏

    評論

    相關(guān)推薦

    stuido中使用hal函數(shù)使用tim中斷使能,程序進(jìn)b Infinite_Loop,為什么?

    stuido中使用hal函數(shù)使用tim中斷使能,導(dǎo)致程序進(jìn) b Infinite_Loop。
    發(fā)表于 09-13 07:21

    pytorch怎么pycharm中運行

    第一部分:PyTorch和PyCharm的安裝 1.1 安裝PyTorch PyTorch是一個開源的機器學(xué)習(xí)庫,用于構(gòu)建和訓(xùn)練神經(jīng)網(wǎng)絡(luò)。要在PyCharm中使
    的頭像 發(fā)表于 08-01 16:22 ?1131次閱讀

    PyTorch中搭建一個最簡單的模型

    PyTorch中搭建一個最簡單的模型通常涉及幾個關(guān)鍵步驟:定義模型結(jié)構(gòu)、加載數(shù)據(jù)、設(shè)置損失函數(shù)和優(yōu)化器,以及進(jìn)行模型訓(xùn)練和評估。
    的頭像 發(fā)表于 07-16 18:09 ?1720次閱讀

    神經(jīng)元模型激活函數(shù)通常有哪幾類

    神經(jīng)元模型激活函數(shù)是神經(jīng)網(wǎng)絡(luò)中的關(guān)鍵組成部分,它們負(fù)責(zé)神經(jīng)元之間引入非線性,使得神經(jīng)網(wǎng)絡(luò)能夠?qū)W習(xí)和模擬復(fù)雜的函數(shù)映射。以下是對神經(jīng)元模型激活
    的頭像 發(fā)表于 07-11 11:33 ?744次閱讀

    如何在PyTorch中實現(xiàn)LeNet-5網(wǎng)絡(luò)

    PyTorch中實現(xiàn)LeNet-5網(wǎng)絡(luò)是一個涉及深度學(xué)習(xí)基礎(chǔ)知識、PyTorch框架使用以及網(wǎng)絡(luò)架構(gòu)設(shè)計的綜合性任務(wù)。LeNet-5是卷積神經(jīng)網(wǎng)絡(luò)(CNN)的早期代表之一,由Yann LeCun
    的頭像 發(fā)表于 07-11 10:58 ?662次閱讀

    前饋神經(jīng)網(wǎng)絡(luò)的基本結(jié)構(gòu)和常見激活函數(shù)

    激活函數(shù)的非線性變換,能夠?qū)W習(xí)和模擬復(fù)雜的函數(shù)映射,從而解決各種監(jiān)督學(xué)習(xí)任務(wù)。本文將詳細(xì)闡述前饋神經(jīng)網(wǎng)絡(luò)的基本結(jié)構(gòu),包括其組成層、權(quán)重和偏置、激活
    的頭像 發(fā)表于 07-09 10:31 ?489次閱讀

    tensorflow和pytorch哪個更簡單?

    PyTorch更簡單。選擇TensorFlow還是PyTorch取決于您的具體需求和偏好。如果您需要一個易于使用、靈活且具有強大社區(qū)支持的框架,PyTorch可能是一個更好的選擇。如果您需要一個
    的頭像 發(fā)表于 07-05 09:45 ?702次閱讀

    BP神經(jīng)網(wǎng)絡(luò)激活函數(shù)怎么選擇

    中,激活函數(shù)起著至關(guān)重要的作用,它決定了神經(jīng)元的輸出方式,進(jìn)而影響整個網(wǎng)絡(luò)的性能。 一、激活函數(shù)的作用 激活
    的頭像 發(fā)表于 07-03 10:02 ?530次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)激活函數(shù)的作用

    卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks, CNNs)是深度學(xué)習(xí)中一種重要的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),廣泛應(yīng)用于圖像識別、語音識別、自然語言處理等領(lǐng)域。卷積神經(jīng)網(wǎng)絡(luò)中,激活函數(shù)
    的頭像 發(fā)表于 07-03 09:18 ?676次閱讀

    如何使用PyTorch建立網(wǎng)絡(luò)模型

    PyTorch是一個基于Python的開源機器學(xué)習(xí)庫,因其易用性、靈活性和強大的動態(tài)圖特性,深度學(xué)習(xí)領(lǐng)域得到了廣泛應(yīng)用。本文將從PyTorch的基本概念、網(wǎng)絡(luò)模型構(gòu)建、優(yōu)化方法、實際應(yīng)用等多個方面,深入探討使用
    的頭像 發(fā)表于 07-02 14:08 ?339次閱讀

    神經(jīng)網(wǎng)絡(luò)中激活函數(shù)的定義及類型

    引言 神經(jīng)網(wǎng)絡(luò)是一種模擬人腦神經(jīng)元結(jié)構(gòu)的計算模型,廣泛應(yīng)用于圖像識別、自然語言處理、語音識別等領(lǐng)域。神經(jīng)網(wǎng)絡(luò)中,激活函數(shù)起著至關(guān)重要的作用,它決定了神經(jīng)元的輸出值,進(jìn)而影響整個網(wǎng)絡(luò)的性能。本文將
    的頭像 發(fā)表于 07-02 10:09 ?405次閱讀

    神經(jīng)網(wǎng)絡(luò)中的激活函數(shù)有哪些

    神經(jīng)網(wǎng)絡(luò)中,激活函數(shù)是一個至關(guān)重要的組成部分,它決定了神經(jīng)元對于輸入信號的反應(yīng)方式,為神經(jīng)網(wǎng)絡(luò)引入了非線性因素,使得網(wǎng)絡(luò)能夠?qū)W習(xí)和處理復(fù)雜的模式。本文將詳細(xì)介紹神經(jīng)網(wǎng)絡(luò)中常用的激活
    的頭像 發(fā)表于 07-01 11:52 ?471次閱讀

    PyTorch激活函數(shù)的全面概覽

    為了更清晰地學(xué)習(xí)Pytorch中的激活函數(shù),并對比它們之間的不同,這里對最新版本的Pytorch中的激活
    的頭像 發(fā)表于 04-30 09:26 ?489次閱讀
    <b class='flag-5'>PyTorch</b>中<b class='flag-5'>激活</b><b class='flag-5'>函數(shù)</b>的全面概覽

    如何在DSADC中使用外部生成載波而不是aurix生成的激發(fā)波的例子?

    你好,有沒有關(guān)于如何在 DSADC 中使用外部生成載波而不是 aurix 生成的激發(fā)波的例子? 背景:當(dāng)定子和轉(zhuǎn)子角度為 90 度時,我試圖通過嘗試饋送來自函數(shù)生成器的信號來模擬解析器位置。 由于
    發(fā)表于 01-22 07:37

    KEIL中使用C對M0編程時怎樣對函數(shù)指定地址呢?

    KEIL中使用C對M0編程時怎樣對函數(shù)指定地址呢?對變量和常數(shù)的定位沒問題,就是函數(shù)總搞不好。謝謝。
    發(fā)表于 01-18 07:14