理解激活函數,多個網絡層之間如何連接

1. 激活函數如何在兩個層之間作用

如果不在兩個層之間添加激活函數,模型將無法學習非線性關系,表現出像線性模型一樣的局限性。
LeakyReLU(0.2) 是一個激活函數,它的作用是對每一層的輸出進行非線性轉換。激活函數通常在神經網絡中用于增加網絡的非線性能力,使得網絡能夠擬合更復雜的函數。

  1. LeakyReLU 的定義
    LeakyReLU 是一種變種的 ReLU 激活函數。與普通的 ReLU 激活函數不同,LeakyReLU 對負值部分并不會直接輸出 0,而是給負值部分留下一點點“泄漏”:
    在這里插入圖片描述
    其中,α(通常為 0.01)是負半軸的斜率,LeakyReLU 通過給負值加上一個較小的斜率(通常是 0.01 或其他小值)來避免神經元完全“死亡”的問題(即神經元在訓練過程中因為權重更新過小導致輸出始終為零)。

在神經網絡中,LeakyReLU 會接收上一層的輸出并對其進行變換,從而得到下一層的輸入。

讓我們通過一個簡化的例子來說明如何將 LeakyReLU 用在網絡中。

model = []
model += block(nROI, int(nROI/2)) + block(int(nROI/2), int(nROI/4))

這里的 block 函數定義了一個標準的網絡塊,其中包含以下內容:

def block(in_layer, out_layer):layers = [nn.Linear(in_layer, out_layer, bias=False)]layers.append(nn.LeakyReLU(0.2, inplace=True))return layers

block函數的目的是將多個神經網絡層組合成一個模塊。這個模塊返回的是一個列表(layers),其中每個元素都是一個nn.Module對象。nn.Module是PyTorch中所有神經網絡層和功能模塊的基類,包括激活函數(如nn.ReLU、nn.Sigmoid等)。因此,block函數中的每個元素可以是一個神經網絡層,也可以是一個激活函數模塊。通過這種方式,block函數能夠靈活地組合不同的層和功能模塊,形成一個完整的神經網絡模塊。

假設我們調用了 block(8, 4) 和 block(4, 2)。這些 block 函數會返回一組層(包括線性層以及 LeakyReLU 激活函數)。
比如 block(8, 4)會得到:

[nn.Linear(8, 4, bias=False), nn.LeakyReLU(0.2)]

這個模塊先通過 nn.Linear(8, 4, bias=False) 將輸入的 8 維數據轉換為 4 維數據,然后將結果傳遞給 LeakyReLU(0.2) 激活函數,進行非線性變換。
假設輸入數據為 x = [2, -3, 1, 0.5, …],經過線性層后輸出為 4 維數據(假設輸出為 [1.0, -0.5, 3.2, 0.1])。然后,經過 LeakyReLU 變換:

1.0 → 1.0(因為大于 0)

-0.5 → -0.5 * 0.2 = -0.1(因為小于 0,乘以 0.2)

3.2 → 3.2(因為大于 0)

0.1 → 0.1(因為大于 0)

最終經過 LeakyReLU 處理后的輸出為:[1.0, -0.1, 3.2, 0.1]。

2 多個網絡層之間如何連接

網絡層是通過每個層的輸出作為下一個層的輸入來連接的。當一個神經網絡的層經過 LeakyReLU 激活后,其輸出成為下一層的輸入。

在你的代碼中,每個 block 函數會返回一個層列表,這些層會依次執行:

model += block(nROI, int(nROI/2)) + block(int(nROI/2), int(nROI/4))

假設輸入數據 x 的維度為 nROI=8,那么這個 block 會返回如下的網絡結構:

nn.Linear(8, 4):將輸入的 8 維數據映射到 4 維。

nn.LeakyReLU(0.2):對 4 維輸出應用 LeakyReLU 激活函數。

然后繼續使用另一個 block(4, 2):

nn.Linear(4, 2):將 4 維數據映射到 2 維。

nn.LeakyReLU(0.2):對 2 維輸出應用 LeakyReLU 激活函數。

block 函數的作用是將一些神經網絡層組合成一個列表。你將這些層組合起來,形成一個完整的神經網絡結構。通過 model +=,這些層會被加到 model 列表中,從而組成模型的一部分。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/75279.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/75279.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/75279.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

紅帽Linux怎么重置密碼

完整流程 ●重啟操作系統,進入啟動界面 ●然后按進入選擇項界面 ●找到linux單詞開頭的那一行,然后移動到該行末尾(方向鍵移動或者使用鍵盤上的end),在末尾加入rd.break ●按ctrl x進入rd.break模式 ●在該模式下依次…

pycharm與python版本

python 3.6-3.9 pycharm 2021版本搭配最好 python 3.8 pycharm 2019版本搭配最好 pycharm各版本下載

Java系統集成AI大模型:是否需要訓練模型及實現路徑

越來越多的Java系統希望通過集成AI大模型能力來提升智能化水平。然而,許多開發者在面對這一任務時,常常會有一個疑問:是否需要訓練AI大模型才能實現這一目標?本文將深入探討這一問題,并提供詳細的解決方案。 一、是否…

論文閱讀筆記:Denoising Diffusion Implicit Models (3)

0、快速訪問 論文閱讀筆記:Denoising Diffusion Implicit Models (1) 論文閱讀筆記:Denoising Diffusion Implicit Models (2) 論文閱讀筆記:Denoising Diffusion Implicit Models &#xff08…

【Linux】Linux 系統啟動流程詳解

1. BIOS/UEFI 階段 硬件自檢(POST) BIOS/UEFI 執行硬件檢查(內存、CPU、外設等)。若硬件異常,通過蜂鳴碼或屏幕提示錯誤。 選擇啟動設備 按配置順序(硬盤、U盤、網絡等)尋找可引導設備。BIOS&a…

C++封裝、繼承、多態(虛函數)

目錄 1、封裝 2、繼承 繼承方式: (1)公有繼承;public (2)保護繼承;protected (3)私有繼承;private 菱形繼承: 同名隱藏? 含義…

藍橋杯沖刺:一維前綴和

系列文章目錄 藍橋杯系列:一維前綴和 文章目錄 系列文章目錄前言一、暴力的寫法:二、一維前綴和的模板: 具體實現: 三、具體例題:求和 1.題目參考:2.以下是具體代碼實現: 總結 前言 上次我介紹…

使用UDP建立連接,會存在什么問題?

使用UDP建立連接,會存在可靠性、有序性、連接狀態管理等方面的問題: 1、數據傳輸不可靠: UDP沒有確認和重傳機制,發送方發送數據后,不會等待接收方的確認消息。這意味著如果數據在傳輸過程中丟失,發送方不…

YOLOv5配置訓練以及華為昇騰910B推理

參考文章: 保姆式yolov5教程,訓練你自己的數據集 - 知乎 Windows 10|11下安裝mmyolo-0.5.0版本 - 知乎 Ubuntu22.04安裝教程&基于華為Ascend AI處理器的om模型atc轉換環境安裝_ubuntu安裝atc工具-CSDN博客嵌入式AI---在華為昇騰推理自己的yolov5目標…

基于yolov11的汽車損傷檢測系統python源碼+onnx模型+評估指標曲線+精美GUI界面

【算法介紹】 基于YOLOv11的汽車損傷檢測系統是一種先進的計算機視覺技術,旨在快速準確地識別汽車的各種損傷類型。該系統利用YOLOv11模型的強大性能,實現了對車輛損傷的精確檢測與分類。 該系統能夠識別的損傷類型包括裂紋(crack&#xff…

[ 3分鐘算法 ] | 遞歸搜索題目 : 合并兩個有序鏈表(遞歸版)

目錄 1. 題目鏈接: 2. 思路分析: 1. 重復子問題? 2. 具體子問題? 3. 遞歸出口? 3. 代碼實現: 4. 小結: 1. 循環(迭代) vs 遞歸 2. 遞歸 vs 深搜 1. 題目鏈接: 21. 合并…

單元測試原則之——不要模擬值對象 (1)

1. 什么是值對象(Value Objects)? 值對象是指那些不可變且僅通過其屬性(數據)來定義的對象。它們通常沒有復雜的邏輯或行為,主要用于存儲和傳遞數據。例如: ● 字符串(String) ● 數字(Integer, Double) ● 日期(LocalDate, Instant) ● 自定義的簡單數據類(如…

【軟件】在Windows和Ubuntu上使用TFTP和NFS

在Windows和Ubuntu上使用TFTP和NFS 零、介紹 最近在玩Linux開發板,在開發的過程中發現需要用到tftp和nfs來幫助傳輸文件,故此記錄如何使用這兩種軟件。 TFTP(Trivial File Transfer Protocol) :是一種簡化的文件傳輸…

JS判斷變量是否為空的方法

在 JavaScript 中,判斷變量是否為空需要根據不同的數據類型和具體需求來處理。以下是常見場景的解決方案: 1. 基礎判斷:null 或 undefined javascript if (value null || value undefined) {// 變量為空 } 或簡寫為: javasc…

Linux更換掛載nfs遷移數據流程

當前:原nfs(10.16.2.1:/myData)掛載在/myData,新的nfs(10.16.2.2:/myData)未掛載 目標:把舊nfs的數據遷移到新的nfs上,并把新nfs掛載到/myData 步驟: 1、新nfs掛載到一…

深入解析音頻:格式、同步及封裝容器

物理音頻和數字音頻 物理音頻 定義:物理音頻就是聲音在自然界中的物理表現形式,本質上是一種機械波,通過空氣或其他介質傳播。例如,當我們說話、樂器演奏或物體碰撞時,都會產生振動,這些振動會引起周圍介…

AI與.NET技術實操系列(四):使用 Semantic Kernel 和 DeepSeek 構建AI應用

1. 引言 在人工智能技術飛速發展的今天,大型語言模型(Large Language Models, LLMs)已成為智能應用開發的核心驅動力。從智能客服到自動化內容生成,LLMs的應用正在深刻改變我們的工作和生活方式。 對于.NET開發者而言,…

導出cad實體所有信息到txt并打開(生成唯一文件名) ——c#cad二次開發

效果如下: 建議在保存時指定編碼為UTF-8: using (StreamWriter sw new StreamWriter(filePath, false, Encoding.UTF8)) { // 寫入內容 } 最終 using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD…

Redis 源碼硬核解析系列專題 - 第一篇:Redis源碼入門與整體架構

1. 引言 Redis作為一個高性能的內存鍵值數據庫,其源碼以簡潔高效著稱。通過解析Redis源碼,我們可以深入理解其單線程模型、事件驅動機制以及模塊化設計的精髓。本篇將從Redis的源碼目錄結構入手,剖析其整體架構,并聚焦啟動流程和事件循環的核心實現。 2. Redis源碼目錄結構…

異步加載+內存分析

異步加載 Resources和AB包的同步加載與異步加載對比代碼: using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;public class AsyncLoad : MonoBehaviour {// Start is called before the first frame updatev…