神經網絡基礎-神經網絡補充概念-26-前向和反向傳播

簡單比較

前向傳播(Forward Propagation):

前向傳播是神經網絡中的正向計算過程,用于從輸入數據開始,逐層計算每個神經元的輸出值,直到得到最終的預測值。在前向傳播過程中,我們按以下步驟進行:

輸入數據:將輸入數據傳遞給輸入層。

加權求和:對每個神經元的輸入進行加權求和,即將輸入與權重相乘并加上偏差。

激活函數:將加權求和的結果輸入激活函數(如Sigmoid、ReLU等),得到神經元的輸出。

傳遞至下一層:將當前層的輸出作為下一層的輸入,重復步驟 2 和 3,直到達到輸出層,得到最終的預測值。

反向傳播(Backward Propagation):

反向傳播是神經網絡中的梯度計算和權重更新過程,用于根據損失函數計算每個參數的梯度,然后根據梯度信息更新網絡的權重和偏差。在反向傳播過程中,我們按以下步驟進行:

計算損失:使用損失函數計算預測值與真實標簽之間的差距。

計算梯度:通過鏈式法則,從輸出層開始,逐層計算每個參數的梯度,傳遞梯度至前一層。對于每一層,計算權重和偏差的梯度,以及當前層輸入的梯度。

參數更新:使用計算得到的梯度信息,根據優化算法(如梯度下降法、Adam等)更新每個參數的值,以減小損失函數。

重復迭代:重復進行前向傳播和反向傳播,多次迭代,直到損失函數足夠小或達到預定的迭代次數。

前向傳播和反向傳播是神經網絡訓練的基石,通過不斷地在這兩個過程中更新參數,神經網絡逐漸優化其性能,從而能夠更好地進行預測和模式識別任務。

代碼實現

import numpy as np# Sigmoid 激活函數及其導數
def sigmoid(x):return 1 / (1 + np.exp(-x))def sigmoid_derivative(x):return x * (1 - x)# 初始化參數
def initialize_parameters(input_size, hidden_size, output_size):parameters = {'W1': np.random.randn(hidden_size, input_size),'b1': np.zeros((hidden_size, 1)),'W2': np.random.randn(output_size, hidden_size),'b2': np.zeros((output_size, 1))}return parameters# 前向傳播
def forward_propagation(X, parameters):W1, b1, W2, b2 = parameters['W1'], parameters['b1'], parameters['W2'], parameters['b2']Z1 = np.dot(W1, X) + b1A1 = sigmoid(Z1)Z2 = np.dot(W2, A1) + b2A2 = sigmoid(Z2)cache = {'Z1': Z1, 'A1': A1, 'Z2': Z2, 'A2': A2}return A2, cache# 計算損失
def compute_loss(A2, Y):m = Y.shape[1]loss = -np.sum(Y * np.log(A2) + (1 - Y) * np.log(1 - A2)) / mreturn loss# 反向傳播
def backward_propagation(X, Y, cache, parameters):m = X.shape[1]A1, A2 = cache['A1'], cache['A2']W2 = parameters['W2']dZ2 = A2 - YdW2 = np.dot(dZ2, A1.T) / mdb2 = np.sum(dZ2, axis=1, keepdims=True) / mdZ1 = np.dot(W2.T, dZ2) * sigmoid_derivative(A1)dW1 = np.dot(dZ1, X.T) / mdb1 = np.sum(dZ1, axis=1, keepdims=True) / mgrads = {'dW1': dW1, 'db1': db1, 'dW2': dW2, 'db2': db2}return grads# 更新參數
def update_parameters(parameters, grads, learning_rate):parameters['W1'] -= learning_rate * grads['dW1']parameters['b1'] -= learning_rate * grads['db1']parameters['W2'] -= learning_rate * grads['dW2']parameters['b2'] -= learning_rate * grads['db2']return parameters# 主函數
def deep_neural_network(X, Y, hidden_size, learning_rate, num_iterations):np.random.seed(42)input_size = X.shape[0]output_size = Y.shape[0]parameters = initialize_parameters(input_size, hidden_size, output_size)for i in range(num_iterations):A2, cache = forward_propagation(X, parameters)loss = compute_loss(A2, Y)grads = backward_propagation(X, Y, cache, parameters)parameters = update_parameters(parameters, grads, learning_rate)if i % 100 == 0:print(f'Iteration {i}, Loss: {loss:.4f}')return parameters# 示例數據
X = np.array([[0, 0, 1, 1], [0, 1, 0, 1]])
Y = np.array([[0, 1, 1, 0]])# 定義超參數
hidden_size = 4
learning_rate = 0.1
num_iterations = 10000# 訓練深層神經網絡
parameters = deep_neural_network(X, Y, hidden_size, learning_rate, num_iterations)# 預測
predictions, _ = forward_propagation(X, parameters)
print('Predictions:', predictions)

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

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

相關文章

驅動DAY4 字符設備驅動分步注冊和ioctl函數點亮LED燈

頭文件 #ifndef __HEAD_H__ #define __HEAD_H__ typedef struct{unsigned int MODER;unsigned int OTYPER;unsigned int OSPEEDR;unsigned int PUPDR;unsigned int IDR;unsigned int ODR; }gpio_t; #define PHY_LED1_ADDR 0X50006000 #define PHY_LED2_ADDR 0X50007000 #d…

一百五十八、Kettle——Kettle各版本及其相關安裝包分享(網盤鏈接,不需積分、不需驗證碼) 持續更新、持續分享

一、目的 最近因為kettle9.3的shim問題看了好多博客,都沒有網盤分享。后來有一位博主分享了kettle9.2的shim安裝包,已經很感謝他,但是是博客分享,下載還需要搞驗證碼下載碼之類的。 kettle9.2的shim安裝包下載好后,一…

圖數據庫_Neo4j基于docker服務版安裝_Neo4j Desktop桌面版安裝---Neo4j圖數據庫工作筆記0004

然后我們來看看如何用docker來安裝Neo4j community server 首先去執行docker pull neo4j:3.5.22-community 去拉取鏡像 然后執行命令就可以安裝了 可以用docker ps查看一下 看看暴露了哪些端口 然后再看一下訪問一下這個時候,要用IP地址了注意 然后再來看一下安裝Desktop 去下…

Sigmastar SSC8826Q 2K行車記錄儀解決方案

一、方案描述 行車記錄儀是智能輔助汽車駕駛,和管理行車生活的車聯網智能終端設備,利用智能芯片處理器、GPS定位、網絡通信、自動控制等技術,將與行車生活有關的各項數據有機地結合在一起。 行車記錄儀如今已經成了必不可少的車載用品之一&…

雙向-->帶頭-->循環鏈表

目錄 一、雙向帶頭循環鏈表概述 1.什么是雙向帶頭循環鏈表 2.雙向帶頭循環鏈表的優勢 3.雙向帶頭循環鏈表簡圖 二、雙向帶頭循環鏈表的增刪查改圖解及代碼實現 1.雙向帶頭循環鏈表的頭插 2.雙向帶頭循環鏈表的尾插 3.雙向帶頭循環鏈表的頭刪 4.雙向帶頭循環鏈表的尾刪…

ATF(TF-A) 威脅模型匯總

安全之安全(security)博客目錄導讀 目錄計劃如下,相關內容補充中,待完成后進行超鏈接,敬請期待,歡迎您的關注 1、通用威脅模型 2、SPMC威脅模型 3、EL3 SPMC威脅模型 4、fvp_r 平臺威脅模型 5、RSS-AP接口威脅模型 威脅建模是安全…

淺學實戰:探索PySpark實踐,解鎖大數據魔法!

文章目錄 Spark和PySpark概述1.1 Spark簡介1.2 PySpark簡介 二 基礎準備2.1 PySpark庫的安裝2.2 構建SparkContext對象2.3 SparkContext和SparkSession2.4 構建SparkSession對象2.5 PySpark的編程模型 三 數據輸入3.1 RDD對象3.2 Python數據容器轉RDD對象3.3 讀取文件轉RDD對象…

IDEA的常用設置,讓你更快速的編程

一、前言 在使用JetBrains的IntelliJ IDEA進行軟件開發時,了解和正確配置一些常用設置是非常重要的。IDEA的強大功能和定制性使得開發過程更加高效和舒適。 在本文中,我們將介紹一些常用的IDEA設置,幫助您更好地利用IDEA進行開發。這些設置包…

Java面向對象——封裝以及this關鍵字

封 裝 封裝是面向對象編程(OOP)的三大特性之一,它將數據和操作數據的方法組合在一個單元內部,并對外部隱藏其具體實現細節。在Java中,封裝是通過類的訪問控制修飾符(如 private、protected、public&#x…

Linux MQTT智能家居項目(智能家居界面布局)

文章目錄 前言一、創建工程項目二、界面布局準備工作三、正式界面布局總結 前言 一、創建工程項目 1.選擇工程名稱和項目保存路徑 2.選擇QWidget 3.添加保存圖片的資源文件: 在工程目錄下添加Icon文件夾保存圖片: 將文件放入目錄中: …

網絡層協議

網絡層協議 IP協議基本概念協議頭格式網段劃分特殊的IP地址IP地址的數量限制私有IP地址和公網IP地址路由IP協議頭格式后續 在復雜的網絡環境中確定一個合適的路徑 IP協議 承接上文,TCP協議并不會直接將數據傳遞給對方,而是交付給下一層協議,…

機器學習基礎(四)

KNN算法 KNN:K-Nearest Neighbor,最近領規則分類。 為了判斷位置實例的類別,以所有已知類別的實例作為參照選擇參數K。計算未知實例與所有已知實例的距離。(一般采用歐氏距離)選擇最近K個已知實例。根據少數服從多數的投票法則,讓未知實例歸類為K個最近鄰樣本中最多數的類…

音視頻FAQ(三):音畫不同步

摘要 本文介紹了音畫不同步問題的五個因素:編碼和封裝階段、網絡傳輸階段、播放器中的處理階段、源內容產生的問題以及轉碼和編輯。針對這些因素,提出了相應的解決方案,如使用標準化工具、選擇強大的傳輸協議、自適應緩沖等。此外&#xff0…

uniapp微信小程序區分正式版,開發版,體驗版

小程序代碼區分是正式版,開發版,還是體驗版 通常正式和開發環境需要調用不同域名接口,發布時需要手動更換 或者有些東西不想在正式版顯示,只在開發版體驗版中顯示,也需要去手動隱藏 官方沒有明確給出判斷環境的方法&a…

SciencePub學術 | CCF推薦重點計算機SCIE征稿中

SciencePub學術 刊源推薦: CCF推薦重點計算機SCIE征稿中!信息如下,錄滿為止: 一、期刊概況: CCF推薦重點SCIE簡介 【期刊簡介】IF:4.0,JCR2區,中科院3區; 【版面類型】正刊&#…

Swift 基礎

工程目錄 請點擊下面工程名稱,跳轉到代碼的倉庫頁面,將工程 下載下來 Demo Code 里有詳細的注釋 點擊下載代碼:swift-01

記錄一下基于jeecg-boot3.0的待辦消息移植記錄

因為之前沒有記錄,所以還要看代碼進行尋找,比較費勁,所以今天記錄一下: 1、后端 SysAnnouncementController 下面函數增加待辦的幾個顯示內容給前端用 具體代碼如下: /*** 功能:補充用戶數據&#xff0c…

由小波變換模極大值重建信號

給定信號, 令小波變換的尺度 則x(t)的二進小波變換為 令為取模極大值時的橫坐標,那么就是模極大值。 目標是由坐標、模極大值及最后一級的低頻分量重建信號x(t) 為了重建x(t),假定有一信號集合h(t),該集合中信號的小波變換和x(…

打印出二進制的奇數位和偶數位

void print(int a) {int i0;printf("奇數位:");for(i30;i>0;i-2){printf("%d ",(a>>i)&1);}printf("\n");printf("偶數位:");for(i31;i>1;i-2){printf("%d ",(a>>i)&1);} …

人臉圖像處理

1,人臉圖像與特征基礎 人臉圖像的特點 規律性: 人的兩只眼睛總是對稱分布在人臉的上半部分,鼻子和嘴唇中心點的連線基本與兩眼之間的連線垂直,嘴絕對不會超過眼鏡的兩端點(雙眼為d,則雙眼到嘴巴的垂直距離一般在0.8-1.25) 唯一性 非侵擾與便利性 可擴展性 人臉圖像的應用 身份…