精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

PyTorch已為我們實現了大多數常用的非線性激活函數

人工智能君 ? 來源:人工智能君 ? 作者:人工智能君 ? 2022-07-06 14:47 ? 次閱讀

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

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

現在我們已經了解了構建神經網絡架構的大部分細節,我們來構建一個可用于解決真實問題的深度學習架構。上一章中,我們使用了簡單的方法,因而可以只關注深度學習算法如何工作。后面將不再使用這種方式構建架構,而是使用PyTorch中正常該用的方式構建。

1.PyTorch構建深度學習算法的方式

PyTorch中所有網絡都實現為類,創建PyTorch類的子類要調用nn.Module,并實現__init__和forward方法。在init方法中初始化層,這一點已在前一節講過。在forward方法中,把輸入數據傳給init方法中初始化的層,并返回最終的輸出。非線性函數經常被forward函數直接使用,init方法也會使用一些。下面的代碼片段展示了深度學習架構是如何用PyTrorch實現的:

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

2.不同機器學習問題的模型架構

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

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

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

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

3.損失函數

一旦定義好了網絡架構,還剩下最重要的兩步。一步是評估網絡執行特定的回歸或分類任務時表現的優異程度,另一步是優化權重。

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

上一章中,我們定義了自己的loss函數。PyTorch提供了經常使用的loss函數的實現。我們看看回歸和分類問題的loss函數。

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

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

下面是用Python代碼實現這種場景的例子。

為了在分類問題中使用交叉熵損失,我們真的不需要擔心內部發生的事情——只要記住,預測差時損失值高,預測好時損失值低。PyTorch提供了loss函數的實現,可以按照如下方式使用。

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

表3.1

L1 loss 通常作為正則化器使用;第4章將進一步講述

MSE loss 均方誤差損失,用于回歸問題的損失函數

Cross-entropy loss 交叉熵損失,用于二分類和多類別分類問題

NLL Loss 用于分類問題,允許用戶使用特定的權重處理不平衡數據集

NLL Loss2d 用于像素級分類,通常和圖像分割問題有關

4.優化網絡架構

計算出網絡的損失值后,需要優化權重以減少損失,并改善算法準確率。簡單起見,讓我們看看作為黑盒的優化器,它們接受損失函數和所有的學習參數,并微量調整來改善網絡性能。PyTorch提供了深度學習中經常用到的大多數優化器。如果大家想研究這些優化器內部的動作,了解其數學原理,強烈建議瀏覽以下博客:

PyTorch提供的一些常用的優化器如下:

?ADADELTA

?Adagrad

?Adam

?SparseAdam

?Adamax

?ASGD

?LBFGS

?RMSProp

?Rprop

?SGD

審核編輯 黃昊宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 非線性
    +關注

    關注

    1

    文章

    209

    瀏覽量

    23064
  • 函數
    +關注

    關注

    3

    文章

    4308

    瀏覽量

    62441
  • pytorch
    +關注

    關注

    2

    文章

    803

    瀏覽量

    13151
收藏 人收藏

    評論

    相關推薦

    射頻放大器的的線性非線性特性

    在無線通信系統中,我們應該聽說過線性系統和非線性系統。它通常是指系統的輸入和輸出的關系是否成線性關系。在早期的2G時代的GSM就是非線性系統
    的頭像 發表于 10-23 10:32 ?236次閱讀
    射頻放大器的的<b class='flag-5'>線性</b>和<b class='flag-5'>非線性</b>特性

    集成運放電路非線性應用要求是什么

    集成運算放大器(簡稱運放)是一種具有高增益、高輸入阻抗、低輸出阻抗的放大器,廣泛應用于模擬信號處理、信號放大、濾波、波形生成等領域。在非線性應用中,運放可以進行函數運算、波形變換、信號處理等操作
    的頭像 發表于 09-03 09:24 ?457次閱讀

    PGA309一旦校準非線性就不準,為什么?

    我自己寫了一個程序做PGA309的校準,現在如果不做非線性校準的話可以把零點和滿點校準到很精確,但是一旦校準非線性就不準。 我的校準方法是先按照非線性為0來校準一遍,這樣可以把零點和
    發表于 08-15 08:31

    神經元模型激活函數通常有哪幾類

    神經元模型激活函數是神經網絡中的關鍵組成部分,它們負責在神經元之間引入非線性,使得神經網絡能夠學習和模擬復雜的函數映射。以下是對神經元模型激活
    的頭像 發表于 07-11 11:33 ?891次閱讀

    非線性電路的基本特點是什么

    電路是指電路中的元件或電路本身具有非線性特性,即輸入與輸出之間的關系不是線性的。在非線性電路中,元件的電壓、電流或功率與時間的關系不是簡單的正比關系,而是滿足某種非線性
    的頭像 發表于 07-09 11:15 ?940次閱讀

    非線性電路具有什么作用

    與輸入之間的關系不是線性的電路。在這些電路中,輸出信號的幅度或相位與輸入信號的幅度或相位之間的關系可以用非線性函數描述。非線性電路與線性電路
    的頭像 發表于 07-09 10:41 ?604次閱讀

    前饋神經網絡的基本結構和常見激活函數

    激活函數非線性變換,能夠學習和模擬復雜的函數映射,從而解決各種監督學習任務。本文將詳細闡述前饋神經網絡的基本結構,包括其組成層、權重和偏置、激活
    的頭像 發表于 07-09 10:31 ?616次閱讀

    BP神經網絡激活函數怎么選擇

    中,激活函數起著至關重要的作用,它決定神經元的輸出方式,進而影響整個網絡的性能。 一、激活函數的作用
    的頭像 發表于 07-03 10:02 ?587次閱讀

    卷積神經網絡激活函數的作用

    起著至關重要的作用,它們可以增加網絡的非線性,提高網絡的表達能力,使網絡能夠學習到更加復雜的特征。本文將詳細介紹卷積神經網絡中激活函數的作用、常見激活
    的頭像 發表于 07-03 09:18 ?763次閱讀

    神經網絡中激活函數的定義及類型

    詳細介紹激活函數的定義、類型。 激活函數的定義和基本功能 2.1 定義 激活函數(Activat
    的頭像 發表于 07-02 10:09 ?439次閱讀

    神經網絡中的激活函數有哪些

    在神經網絡中,激活函數是一個至關重要的組成部分,它決定神經元對于輸入信號的反應方式,為神經網絡引入了非線性因素,使得網絡能夠學習和處理復雜的模式。本文將詳細介紹神經網絡中
    的頭像 發表于 07-01 11:52 ?516次閱讀

    PyTorch激活函數的全面概覽

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

    STM32L451用USB I2C發送擦除指令后,大多數情況接收到的是NACK的值,為什么?

    發送擦除指令后,大多數情況接收到的是NACK的值
    發表于 03-28 08:17

    非線性元件滿足歐姆定律嗎

    特性與歐姆定律不完全相同。非線性元件的電流與電壓之間的關系是非線性的,即電流與電壓之間不是簡單的比例關系。當非線性元件的電壓發生變化時,電流的變化方式可能是指數函數、對數
    的頭像 發表于 01-10 14:00 ?2880次閱讀

    線性電阻和非線性電阻的區別

    線性電阻和非線性電阻的區別? 線性電阻和非線性電阻是兩種常見的電子元件,它們在電路中具有不同的特性和行為。本文將詳盡、詳實、細致地討論線性
    的頭像 發表于 12-07 17:03 ?2869次閱讀