[深度學習] 前饋神經網絡

前饋神經網絡(Feedforward Neural Network, FFNN)是人工神經網絡中最基本的類型,也是許多復雜神經網絡的基礎。它包括一個輸入層、一個或多個隱藏層和一個輸出層。以下是詳細介紹:

1. 結構

1. 輸入層(Input Layer)
  • 包含與輸入數據特征數相同的神經元。
  • 直接接收輸入數據,每個神經元對應一個輸入特征。
2. 隱藏層(Hidden Layers)
  • 包含一個或多個隱藏層,每層包含若干神經元。
  • 每個神經元與前一層的所有神經元相連接。
2.1. 全連接層(Dense Layer)

定義:每個神經元與前一層的所有神經元連接。

作用

  • 進行線性變換:在這里插入圖片描述
    ,其中 W(l) 是權重矩陣, a(l?1) 是前一層的激活值, b(l)是偏置。
  • 通過激活函數進行非線性變換:在這里插入圖片描述
    常見激活函數
  • ReLU(Rectified Linear Unit)
  • Sigmoid
  • Tanh

示例代碼

tf.keras.layers.Dense(64, activation='relu')
2.2. 激活函數層(Activation Layer)

定義:非線性函數,應用于每個神經元的輸出。

作用

  • 引入非線性,使網絡能夠學習復雜的模式。

常見激活函數

  • ReLU:在這里插入圖片描述
  • Sigmoid:在這里插入圖片描述
  • Tanh:在這里插入圖片描述
    示例代碼
tf.keras.layers.Activation('relu')
2.3. Dropout層

定義:在訓練過程中隨機丟棄一定比例的神經元。

作用

  • 防止過擬合,增強模型的泛化能力。

參數

  • rate:丟棄概率(0到1之間)。

示例代碼

tf.keras.layers.Dropout(0.5)
2.4. 批量歸一化層(Batch Normalization Layer)

定義:在每個批次中標準化激活值。

作用

  • 加速訓練,穩定學習過程。
  • 防止過擬合,增強模型的魯棒性。

示例代碼

tf.keras.layers.BatchNormalization()
2.5. 高斯噪聲層(Gaussian Noise Layer)

定義:在訓練過程中向輸入添加高斯噪聲。

作用

  • 增強模型的魯棒性,防止過擬合。

參數

  • stddev:噪聲的標準差。

示例代碼

tf.keras.layers.GaussianNoise(0.1)
2.6. 高斯丟棄層(Gaussian Dropout Layer)

定義:在訓練過程中以高斯分布的比例隨機丟棄神經元。

作用

  • 類似于Dropout層,但使用高斯分布的比例來丟棄神經元。

參數

  • rate:丟棄概率。

示例代碼

tf.keras.layers.GaussianDropout(0.5)
3. 輸出層(Output Layer)
  • 包含與輸出要求相匹配的神經元數量。
  • 輸出神經元的數量取決于具體的任務,如回歸任務可能只有一個輸出神經元,分類任務根據類別數設置相應的神經元數。
  • 使用適合任務的激活函數,如Sigmoid用于二分類,Softmax用于多分類,線性激活函數用于回歸。

2. 工作原理

  1. 前向傳播(Forward Propagation)

    • 輸入數據通過網絡層層傳播,每層神經元計算加權和(加上偏置項),并通過激活函數進行非線性變換。
    • 公式:在這里插入圖片描述
      ,其中z(l)是第l層的線性組合,W(l)是權重矩陣,a(l?1)是前一層的輸出,b(l)是偏置項。
    • 激活函數:在這里插入圖片描述
  2. 損失函數(Loss Function)

    • 定義模型預測值與真實值之間的差異。
    • 常用的損失函數包括均方誤差(MSE)用于回歸,交叉熵損失(Cross-Entropy Loss)用于分類。
    • 公式:對于二分類問題,交叉熵損失函數為 在這里插入圖片描述
  3. 反向傳播(Backward Propagation)

    • 通過梯度下降優化算法來更新權重和偏置,以最小化損失函數。
    • 計算損失函數相對于每個參數的梯度,并反向傳播這些梯度,通過鏈式法則逐層更新權重和偏置。
    • 公式:權重更新 在這里插入圖片描述
      ,偏置更新 在這里插入圖片描述
      ,其中 η 是學習率。

3. 特點和應用

  • 特點

    • 前饋神經網絡是有向無環網絡(DAG),數據從輸入層通過隱藏層一直流向輸出層,不存在反饋循環。
    • 容易實現和理解,是深度學習模型的基礎。
    • 通常通過增加隱藏層數量和神經元數量來提高模型的表達能力。
  • 應用

    • 適用于各種監督學習任務,包括回歸、二分類和多分類任務。
    • 用于預測、分類、模式識別等領域。
    • 可以與其他技術結合,如卷積神經網絡(CNN)和循環神經網絡(RNN)等,用于處理圖像、文本、時序數據等復雜任務。

示例代碼

下面是一個更復雜的前饋神經網絡示例代碼,包含多種不同類型的隱藏層,包括密集層(Dense Layer)、批量歸一化層(Batch Normalization)、Dropout層、和高斯噪聲層(Gaussian Noise Layer)。

示例代碼
import tensorflow as tf
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.datasets import make_classification
from sklearn.preprocessing import StandardScaler# 生成示例數據
X, y = make_classification(n_samples=1000, n_features=20, n_classes=2, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 數據標準化
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)# 構建模型
model = tf.keras.Sequential([tf.keras.layers.Dense(128, activation='relu', input_shape=(X_train.shape[1],)),tf.keras.layers.BatchNormalization(),  # 批量歸一化層tf.keras.layers.Dropout(0.5),  # Dropout層tf.keras.layers.Dense(64, activation='relu'),tf.keras.layers.BatchNormalization(),tf.keras.layers.Dropout(0.5),tf.keras.layers.Dense(32, activation='relu'),tf.keras.layers.GaussianNoise(0.1),  # 高斯噪聲層tf.keras.layers.BatchNormalization(),tf.keras.layers.Dense(16, activation='relu'),tf.keras.layers.BatchNormalization(),tf.keras.layers.Dense(1, activation='sigmoid')  # 輸出層,適用于二分類任務
])# 編譯模型
model.compile(optimizer='adam',loss='binary_crossentropy',  # 二分類交叉熵損失metrics=['accuracy'])# 訓練模型
history = model.fit(X_train, y_train, epochs=50, batch_size=32, validation_split=0.2)# 評估模型
test_loss, test_accuracy = model.evaluate(X_test, y_test)
print(f'Test Accuracy: {test_accuracy}')# 用于預測的新數據
new_data = np.random.rand(1, 20)  # 示例數據
new_data = scaler.transform(new_data)
prediction = model.predict(new_data)
print(f'Prediction: {prediction}')

代碼解釋

  1. 數據生成

    • 使用make_classification函數生成一個二分類的數據集,其中有1000個樣本,每個樣本有20個特征。
    • 將數據集分為訓練集和測試集。
  2. 數據標準化
    使用StandardScaler對數據進行標準化處理,使每個特征的均值為0,方差為1。

  3. 模型構建

    • 第一層:全連接層(Dense)有128個神經元,激活函數為ReLU。

    • 第二層:批量歸一化層(BatchNormalization),有助于加速訓練和穩定性。

    • 第三層:Dropout層,丟棄率為0.5,防止過擬合。

    • 第四層:全連接層,有64個神經元,激活函數為ReLU。

    • 第五層:批量歸一化層。

    • 第六層:Dropout層,丟棄率為0.5。

    • 第七層:全連接層,有32個神經元,激活函數為ReLU。

    • 第八層:高斯噪聲層(GaussianNoise),添加標準差為0.1的高斯噪聲,增加模型魯棒性。

    • 第九層:批量歸一化層。

    • 第十層:全連接層,有16個神經元,激活函數為ReLU。

    • 第十一層:批量歸一化層。

    • 輸出層:全連接層,有1個神經元,激活函數為Sigmoid,適用于二分類任務。

  4. 模型編譯與訓練

    • 使用Adam優化器,二分類交叉熵損失函數,準確率作為評估指標。
    • 訓練模型,設置訓練輪數為50,每批次訓練樣本數為32,20%的數據用于驗證。
  5. 模型評估與預測

    • 評估測試集上的模型表現,打印測試準確率。
    • 對新數據進行預測,展示預測結果。

這個示例代碼展示了如何在前饋神經網絡中使用不同類型的隱藏層,以增強模型的表達能力和穩定性。可以根據需要進一步調整模型結構和參數。

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

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

相關文章

【Android 構建新工具】Bazel 構建Android項目

【Android 構建新工具】Bazel 構建Android項目 本文我們使用Bazel構建一個最簡單的Android項目。Bazel提供了編譯Android程序內置的方法,具體參考:Android Rules 1. 環境準備 Bazel只是編譯工具,不是真正的編譯器,所以還是需要Andorid開發的SD、NDK以及Android Studio,…

基于改進天鷹優化算法(IAO)優化支持向量機(SVM)數據分類預測(IAO-SVM)

改進天鷹優化算法(IAO)見:【智能優化算法】改進的AO算法(IAO)-CSDN博客 支持向量機(SVM)數據分類預測:基于支持向量機(SVM)的數據分類預測-CSDN博客 代碼原理 基于改進天鷹優化算法(IAO)優化支持向量機(SVM&#xf…

uniapp獲取證書秘鑰、Android App備案獲取公鑰、簽名MD5值

一、 uniapp獲取證書秘鑰 打開uniapp開發者中心下載證書打開cmd輸入以下這段代碼,下載提供查看到的密鑰證書密碼就可以了!下載證書在 java 環境下運行才可以 // your_alias 換成 證書詳情中的別名,your_keystore.keystore 改成自己的證書文件…

Splashtop 的屏幕錄制功能如何提高 IT 合規性

在當今的數字時代,隨著遠程辦公的普及以及監管要求和網絡安全威脅的加劇,IT 副總裁、首席信息官(CIO)等 IT 管理人員面臨著一系列獨特挑戰。 各組織在遠程支持運營中要全力維護合規性、提高安全性并堅持問責制,技術解…

漢江師范學院2024年成人高等繼續教育招生簡章

漢江師范學院,這所承載著深厚文化底蘊和學術積淀的高等學府,即將在2024年迎來新一季的成人高等繼續教育招生。這不僅是一次知識的盛宴,更是對每一位懷揣夢想、追求進步的成年人的誠摯邀請。 漢江師范學院,以其嚴謹的教學態度、卓…

關于數據庫的ACID幾點

首先的話就是關于ACID,最重要的就是原子性了,這是基礎。 原子性是指事務包含的所有操作,要么全部完成,要么全部不完成。如果不能保證原子性,可能會出現以下問題: 數據不一致:事務中的部分操作…

AI基礎:從線性回歸到梯度下降

一個簡單的問題: 如果此時你正站在迷路繚繞的山坡上,能見度不高,但是你又想去往最低的山谷的位置,怎么走? 很簡單,哪里陡那就往那里走唄——而這就是梯度下降算法的思想。 古話說:“先發制于人…

java基于ssm+jsp 電子商城系統

1管理員功能模塊 管理員登錄,通過填寫用戶名、密碼進行登錄,如圖1所示。 圖1管理員登錄界面圖 管理員登錄進入電子商城系統可以查看個人中心、用戶管理、醫生管理、藥品信息管理、線上診療管理、醫生信息管理、管理員管理、論壇管理、系統管理、訂單管…

行業推薦!IG5216量產工具下載,IG5216開卡軟件分享

國內固態硬盤常用,且有量產工具流傳出來的主控廠商包括慧榮、群聯、點序、英韌、得一微、瑞昱、聯蕓、邁威、國科、華瀾微等等。 每個主控需要用各自對應的量產工具,不同的量產工具支持的閃存顆粒也有差異,因此要根據固態硬盤實際的主控型號…

氣膜建筑審批流程及現狀分析—輕空間

氣膜建筑作為一種新興的建筑形式,以其快速建造、成本低廉和靈活多變的優勢在各個領域得到了廣泛應用。然而,氣膜建筑在我國尚未被納入正式的建筑規范,這使得其審批流程與傳統建筑有顯著差異。輕空間將詳細探討氣膜建筑的審批流程及其在實際操…

深入探究 npm cache 命令:用途與實踐指南

npm(Node Package Manager)是 JavaScript 編程語言的包管理器,廣泛用于 Node.js 應用程序。它不僅用于管理項目中的依賴,還提供了一個強大的緩存機制來加速包的安裝過程。npm cache 命令是與 npm 緩存交互的命令行工具&#xff0c…

MongoDB:JSON and BSON

目錄 什么是 JSON MongoDB-JSON連接 什么是 BSON MongoDB 使用 BSON 還是 JSON JSON 與 BSON 架構靈活性和數據治理 JSON 和 BSON 是近親,正如它們幾乎相同的名稱所暗示的那樣JSON(即 JavaScript 對象表示法)是網絡上廣泛流行的數據交換…

grep使用

在 Windows 中,你可以使用以下步驟來使用 grep 命令: 安裝 Git for Windows:grep 命令通常在類 Unix 操作系統(如 Linux、Mac OS X 等)中使用,但你可以通過安裝 Git for Windows 來在 Windows 上獲得類似的…

Transformer 結構

目錄 一、Transformer 的整體結構二、Input Encoding三、Transformer Block3.1 Encoder3.1.1 Attention3.1.2 Self-attention3.1.3 Multi-head Attention 3.2 Decoder3.2.1 Masked Multi-head Attention 四、Transformer 的優缺點 遇到看不明白的地方,歡迎在評論中留…

Incremental Player Build

*未解決,僅作記錄 Unity 版本 2021.3.15f1 問題 Unity 發布webgl 平臺卡在Incremental Player Build 界面。 解決 未找到明確原因,簡化工程路徑后發布成功。

Leetcode 矩陣問題

36題.有效的數獨 此類問題特點是給出行列的多種限定條件,數獨限制每行每列每個小九宮格元素范圍為1-9且不可重復 。解決此類問題最簡單的想法就是使用哈希set,記錄每行,每列,每個小九宮格已經出現的元素。在遍歷矩陣時提前做出是否…

S32K3 --- Wdg(內狗) Mcal配置

前言 看門狗的作用是用來檢測程序是否跑飛,進入死循環。我們需要不停地喂狗,來確保程序是正常運行的,一旦停止喂狗,意味著程序跑飛,超時后就會reset復位程序。 一、Wdg 1.1 WdgGeneral Wdg Disable Allowed : 啟用此參數后,允許在運行的時候禁用看門狗 Wdg Enable User…

技術干貨丨如何加速工業數字孿生應用落地?

什么是數字孿生? “孿生”概念最早可追溯至NASA的阿波羅項目,隨著數字化技術的進步,“孿生”概念應用從物理孿生向數字孿生發展。即“數字孿生”是對資產、進程或系統的一種數字化表示,并通過信息交互、數據同步等方式實現物理實體…

Java校園跑腿小程序校園代買幫忙外賣源碼社區外賣源碼

🔥校園跑腿與外賣源碼揭秘🔥 🚀 引言:為何需要校園跑腿與外賣源碼? 在快節奏的校園生活里,學生們對于便捷、高效的服務需求日益增長。校園跑腿和外賣服務成為了解決這一需求的熱門選擇。然而,…

C++ STL Iterator Adapter

1. std::back_insert_iterator 使用 // back_insert_iterator example #include <iostream> // std::cout #include <iterator> // std::back_insert_iterator #include <vector> // std::vector #include <algorithm> // std::copy…