【機器學習筆記 Ⅱ】3 前向傳播

前向傳播(Forward Propagation)實現詳解

前向傳播是神經網絡中數據從輸入層流向輸出層的過程,通過逐層計算每一層的輸出,最終得到預測結果。以下是其實現原理和步驟的完整解析:


1. 前向傳播的核心步驟

(1) 線性變換(Linear Transformation)

對輸入數據 (\mathbf{X}) 進行加權求和并加上偏置:

(2) 激活函數(Activation Function)

對線性變換結果應用非線性激活:

(3) 逐層傳遞

重復上述步驟,直到輸出層:
[
\text{輸入層} \rightarrow \text{隱藏層1} \rightarrow \dots \rightarrow \text{輸出層}
]


2. 數學公式示例(以3層網絡為例)

假設網絡結構為:輸入層 → 隱藏層(ReLU)→ 輸出層(Softmax)


3. 代碼實現(Python + NumPy)

(1) 定義激活函數

import numpy as npdef relu(z):return np.maximum(0, z)def softmax(z):exp_z = np.exp(z - np.max(z, axis=1, keepdims=True))  # 防溢出return exp_z / np.sum(exp_z, axis=1, keepdims=True)

(2) 初始化參數

input_size = 784  # 輸入維度(如MNIST圖像展平后)
hidden_size = 128  # 隱藏層神經元數
output_size = 10   # 輸出類別數(如10分類)# 隨機初始化權重和偏置
W1 = np.random.randn(input_size, hidden_size) * 0.01
b1 = np.zeros((1, hidden_size))
W2 = np.random.randn(hidden_size, output_size) * 0.01
b2 = np.zeros((1, output_size))

(3) 前向傳播實現

def forward_propagation(X, W1, b1, W2, b2):# 隱藏層計算z1 = np.dot(X, W1) + b1a1 = relu(z1)# 輸出層計算z2 = np.dot(a1, W2) + b2y_pred = softmax(z2)return y_pred, {"z1": z1, "a1": a1}  # 緩存中間結果(用于反向傳播)# 示例輸入(假設X是100張784維的MNIST圖像)
X = np.random.randn(100, input_size)
y_pred, cache = forward_propagation(X, W1, b1, W2, b2)
print("預測結果形狀:", y_pred.shape)  # 輸出 (100, 10)

4. 關鍵細節與注意事項

(1) 維度一致性檢查

  • 輸入 (\mathbf{X}) 形狀:(batch_size, input_size)
  • 權重 (\mathbf{W}^{(l)}) 形狀:(上一層神經元數, 當前層神經元數)
  • 偏置 (\mathbf{b}^{(l)}) 形狀:(1, 當前層神經元數)(廣播機制自動擴展)。

(2) 激活函數的選擇

任務類型隱藏層激活函數輸出層激活函數
二分類ReLUSigmoid
多分類ReLUSoftmax
回歸ReLU無(線性輸出)

(3) 數值穩定性

  • Softmax溢出問題:需減去最大值(z - np.max(z))。
  • 初始化權重:小隨機數(如乘0.01),避免初始激活值過大。

5. 前向傳播 vs 反向傳播

階段前向傳播反向傳播
目的計算預測值 (\hat{y})計算梯度 (\frac{\partial J}{\partial \mathbf{W}})
數據流向輸入層 → 輸出層輸出層 → 輸入層
緩存內容保存 (\mathbf{z}, \mathbf{a})利用緩存的 (\mathbf{z}, \mathbf{a}) 計算梯度

6. 實際應用中的優化

(1) 批量處理(Batch Processing)

  • 一次性計算多個樣本(如100張圖像)的前向傳播,利用矩陣運算加速。
  • 輸入X形狀為 (batch_size, input_size)

(2) 深度學習框架實現

  • TensorFlow/Keras:自動處理前向傳播,用戶只需定義層結構。

    model = Sequential([Dense(128, activation='relu', input_shape=(784,)),Dense(10, activation='softmax')
    ])
    y_pred = model.predict(X)
    
  • PyTorch:通過 forward 方法自定義前向邏輯。

    class Net(nn.Module):def __init__(self):super().__init__()self.fc1 = nn.Linear(784, 128)self.fc2 = nn.Linear(128, 10)def forward(self, x):x = torch.relu(self.fc1(x))x = torch.softmax(self.fc2(x), dim=1)return x
    

7. 總結

  • 前向傳播是神經網絡預測的核心過程,通過線性變換和激活函數逐層傳遞數據。
  • 實現要點
    1. 確保權重和輸入的維度匹配。
    2. 合理選擇激活函數(隱藏層用ReLU,輸出層按任務選擇)。
    3. 緩存中間結果(z, a)以供反向傳播使用。
  • 擴展應用:CNN中的卷積層、RNN中的時間步展開均基于相同原理。

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

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

相關文章

人體坐姿檢測系統開發實戰(YOLOv8+PyTorch+可視化)

本文將手把手教你構建智能坐姿檢測系統,結合目標檢測與姿態估計技術,實現不良坐姿的實時識別與預警 ### 一、項目背景與價值 現代人每天平均坐姿時間超過8小時,不良坐姿會導致: - 脊椎壓力增加300% - 頸椎病發病率提升45% - 腰椎間盤突出風險增加60% 本系統通過計算機…

卷積神經網絡經典架構演進

LeNet-5 網絡架構 #mermaid-svg-8VgsGVLusLXKY5lE {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-8VgsGVLusLXKY5lE .error-icon{fill:#552222;}#mermaid-svg-8VgsGVLusLXKY5lE .error-text{fill:#552222;stroke:#5…

mybatis/mybatis-plus添加數據,自增id的值為負數

1、問題概述?使用mybatis-plus的insert方法添加數據的時候,數據雖然添加成功了,但是返回值為false,提示添加失敗。當觀察數據的時候,發現數據的自增主鍵id的值盡然為-1,或者無規律的長串負數,如…

商業創業融資項目計劃書PPT模版

創業融資計劃書PPT模版,營銷模式分析PPT模版,創業計劃書PPT模版,互聯網電商創業推廣手冊PPT模版,商業項目計劃書PPT模版,高端商業計劃通用PPT模版,商業計劃書,科技商業PPT模版 商業創業融資項目…

新人如何入門學習 STM32?

作為一個在嵌入式領域摸爬滾打了近10年的老兵,看到這個問題時我的思緒瞬間回到了當年那個懵懂的自己。說實話,2014年那個夏天,24歲的我剛從機械專業畢業卻被調劑到了廈門某馬的電子部門,第一次聽到"STM32"這個詞的時候&…

clickhouse數據庫表和doris數據庫表遷移starrocks數據庫時建表注意事項總結

目錄零、前言一、clickhouse數據庫表在starrocks數據庫建表時問題總結1.1 數據類型類問題:1.2 數據導出階段:二、doris 數據庫表在starrocks數據庫建表時問題總結2.1 properties不支持的屬性(直接刪除):2.2 properties…

社區云管家 - 智慧生活新方式 ——仙盟創夢IDE

社區服務熱門推薦數字化時代的社區服務新形態?在數字化浪潮席卷日常生活的今天,一個集多功能于一體的綜合社區官網正成為連接居民與社區服務的核心紐帶。這類平臺以 “一站式解決生活需求” 為核心,將看房、外賣、物業、快遞、求職、生鮮、出行、文具打…

MongoDB GridFS

MongoDB GridFS 引言 MongoDB 是一種高性能、可擴展的文檔存儲系統,它提供了靈活的數據模型和豐富的查詢功能。在處理大量非結構化數據時,MongoDB 的 GridFS 功能尤為突出。GridFS 是一種用于存儲和檢索大文件的解決方案,它可以存儲任意大小的文件,并將其分解為多個較小的…

Linux中程序的limits中的Max open files的配置由哪些參數決定

在 Linux 中,程序的 Max open files(最大打開文件數,即 ulimit -n)由多個層級的參數共同控制,具體如下: 1. 內核級全局限制(系統默認上限) 由 /proc/sys/fs/file-max 控制&#xff0…

git clone xxx.git 提示報錯:fatal: Unable to find remote helper for ‘http‘

[rootroot /home]# git clone http://gitlab.xxx.qunar.com/xx/xxx.git Cloning into ‘xxx’… fatal: Unable to find remote helper for ‘http’ 我今天在Linux服務器上執行git clone一個倉庫的代碼到機器上,但是執行的時候提示上面的錯誤,我就很詫異…

【機器學習筆記Ⅰ】10 特征工程

特征工程(Feature Engineering)詳解 特征工程是機器學習和數據科學中的核心環節,旨在通過對原始數據的轉換、組合和提取,構建更適合模型的高質量特征。其質量直接決定模型性能上限(“數據和特征決定了模型的上限&#…

20250708-03-string結構及命令詳解_筆記

一、字符串操作1. set命令1)set命令詳解基本語法與參數命令格式:set key value [ex 秒數]/[px 毫秒數][nx]/[xx]有效期設置:ex參數:以秒為單位設置過期時間,如set a 1 ex 10表示1…

SpringBoot3-集成MybatisPlus

此次操作是在多模塊下進行的&#xff0c;SpringBoot3-規劃多模塊目錄 添加管理依賴 根模塊 zibocoder-parent 的 pom.xml 中添加 MybatisPlus bom 管理依賴 <properties>...<mybatis-plus.version>3.5.12</mybatis-plus.version>... </properties> <…

部署MongoDB

環境:CentOS7 添加 MongoDB 官方 YUM 倉庫 sudo vi /etc/yum.repos.d/mongodb-org-6.0.repo 將以下內容粘貼到文件中(以 MongoDB 6.0 為例): [mongodb-org-6.0] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/6.0/x86…

重學前端002 --響應式網頁設計 CSS 基礎

文章目錄css 樣式特殊說明根據在這里 Freecodecamp 實踐&#xff0c;調整順序后做的總結。 css 樣式 body {background-color: red; # 跟background-image 不同時使用background-image: url(https://cdn.freecodecamp.org/curriculum/css-cafe/beans.jpg);font-family: sans-…

Zig高并發爬取數據簡潔模版

上文中我們介紹了Zig語言得爬蟲的有些優劣勢&#xff0c;想必大家對于自身項目選擇那種語言做爬蟲應該有些思路了&#xff0c;今天我將使用Zig的標準庫來構建一個簡單的高并發爬蟲模板。由于Zig的異步機制和標準庫中的http模塊&#xff0c;我們可以實現一個基于事件循環的爬蟲。…

IS-IS 協議 | LSP 傳輸與鏈路狀態數據庫同步機制

略作整理&#xff0c;待校。IS-IS 中 SRM 與 SSN 標志的作用及協同機制 SRM 和 SSN 標志的作用 在 IS-IS 協議中&#xff0c;SRM 和 SSN 是兩個關鍵標志&#xff0c;用于控制和優化 LSP&#xff08;Link State PDU,鏈路狀態信息&#xff09;在網絡中的泛洪與同步過程。 一、SRM…

xxl-job 改造適配pg數據后的Jenkins自動部署

接上文適配pg數據庫之后需要進行部署&#xff0c;便有了此文 1.下載并安裝Jenkins如下&#xff1a; https://mirrors.jenkins.io/war-stable/2.504.3/jenkins.war nohup java -jar jenkins.war --httpPort8080 & 啟動Jenkins并解鎖安裝需要的環境&#xff0c;git&#xff0…

數據庫Oracle從入門到精通!第四天(并發、鎖、視圖)

八、并發控制數據庫是一個共享資源&#xff0c;可以為多個應用程序所共享&#xff0c;這些程序可以串行執行&#xff08;排隊執行&#xff09;&#xff0c;但是很多情況下&#xff0c;可能出現多個程序或一個程序中的多個進程并行的執行&#xff0c;這就是數據庫的并行操作&…

EXCEL(帶圖)轉html

文章目錄敘述1、效果2、excel 轉換主邏輯3、其他補充3.0 主前端bootstrap3.1 my.css&#xff1a;3.2 my.js3.3 入口home.html3.4 Data.ashx敘述 要實現H5 展示excel 查詢 了一下沒有好的辦法,自己寫了一個,簡單記錄一下 1、效果 用bootstrap 根據sheet做了一個菜單。 2、exc…