神經網絡基礎-神經網絡補充概念-25-深層神經網絡

簡介

深層神經網絡(Deep Neural Network,DNN)是一種具有多個隱藏層的神經網絡,它可以用來解決復雜的模式識別和特征學習任務。深層神經網絡在近年來的機器學習和人工智能領域中取得了重大突破,如圖像識別、自然語言處理、語音識別等。

重要概念

多隱藏層:
深層神經網絡具有多個隱藏層,這些隱藏層可以用來提取不同層次的特征。每一層的神經元可以將前一層的輸出作為輸入,并對數據進行更高級的抽象和特征學習。

特征學習:
深層神經網絡通過逐層的特征學習,可以自動地從原始數據中提取出更加抽象和有意義的特征。每一層的權重和偏差都在訓練過程中進行調整,以便更好地捕捉數據中的模式和信息。

非線性激活函數:
深層神經網絡使用非線性的激活函數(如ReLU、Sigmoid、Tanh等)來引入非線性變換,從而使網絡能夠處理更加復雜的關系和模式。

前向傳播和反向傳播:
深層神經網絡的訓練過程包括前向傳播和反向傳播。前向傳播用于計算預測值,并計算損失函數,而反向傳播用于計算梯度并更新權重和偏差,以減小損失函數。

優化算法:
訓練深層神經網絡通常使用各種優化算法,如梯度下降法、隨機梯度下降法、Adam等。這些算法有助于尋找損失函數的最小值,并使網絡的性能逐漸提升。

過擬合問題:
深層神經網絡容易出現過擬合問題,特別是在數據量較少的情況下。為了避免過擬合,常常會采用正則化、Dropout等技術。

深度學習框架:
為了便于搭建和訓練深層神經網絡,許多深度學習框架(如TensorFlow、PyTorch、Keras等)被開發出來,提供了豐富的工具和接口來支持深度神經網絡的構建和訓練。

代碼實現

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(layer_dims):parameters = {}L = len(layer_dims)  # 層數for l in range(1, L):parameters['W' + str(l)] = np.random.randn(layer_dims[l], layer_dims[l - 1]) * 0.01parameters['b' + str(l)] = np.zeros((layer_dims[l], 1))return parameters# 前向傳播
def forward_propagation(X, parameters):caches = []A = XL = len(parameters) // 2  # 神經網絡層數for l in range(1, L):Z = np.dot(parameters['W' + str(l)], A) + parameters['b' + str(l)]A = sigmoid(Z)caches.append((Z, A))Z = np.dot(parameters['W' + str(L)], A) + parameters['b' + str(L)]AL = sigmoid(Z)caches.append((Z, AL))return AL, caches# 計算損失
def compute_loss(AL, Y):m = Y.shape[1]cost = -np.sum(Y * np.log(AL) + (1 - Y) * np.log(1 - AL)) / mreturn cost# 反向傳播
def backward_propagation(AL, Y, caches):grads = {}L = len(caches)m = AL.shape[1]Y = Y.reshape(AL.shape)dAL = - (np.divide(Y, AL) - np.divide(1 - Y, 1 - AL))current_cache = caches[L - 1]dZL = dAL * sigmoid_derivative(current_cache[1])grads['dW' + str(L)] = np.dot(dZL, caches[L - 2][1].T) / mgrads['db' + str(L)] = np.sum(dZL, axis=1, keepdims=True) / mfor l in reversed(range(L - 1)):current_cache = caches[l]dZ = np.dot(parameters['W' + str(l + 2)].T, dZL) * sigmoid_derivative(current_cache[1])grads['dW' + str(l + 1)] = np.dot(dZ, caches[l][1].T) / mgrads['db' + str(l + 1)] = np.sum(dZ, axis=1, keepdims=True) / mdZL = dZreturn grads# 更新參數
def update_parameters(parameters, grads, learning_rate):L = len(parameters) // 2for l in range(L):parameters['W' + str(l + 1)] -= learning_rate * grads['dW' + str(l + 1)]parameters['b' + str(l + 1)] -= learning_rate * grads['db' + str(l + 1)]return parameters# 主函數
def deep_neural_network(X, Y, layer_dims, learning_rate, num_iterations):np.random.seed(42)parameters = initialize_parameters(layer_dims)for i in range(num_iterations):AL, caches = forward_propagation(X, parameters)cost = compute_loss(AL, Y)grads = backward_propagation(AL, Y, caches)parameters = update_parameters(parameters, grads, learning_rate)if i % 100 == 0:print(f'Iteration {i}, Cost: {cost:.4f}')return parameters# 示例數據
X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]]).T
Y = np.array([[0, 1, 1, 0]]).T# 定義網絡結構和超參數
layer_dims = [2, 4, 4, 1]  # 輸入層維度、隱藏層維度、輸出層維度
learning_rate = 0.1
num_iterations = 10000# 訓練深層神經網絡
parameters = deep_neural_network(X, Y, layer_dims, learning_rate, num_iterations)# 預測
predictions, _ = forward_propagation(X, parameters)
print('Predictions:', predictions)

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

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

相關文章

Windows環境下安裝RabbitMQ

1.消息隊列中間件簡介 消息隊列中間件是分布式系統中重要的組件,主要解決應用耦合,異步消息,流量削鋒等問題實現高性能,高可用,可伸縮和最終一致性。 使用較多的消息隊列有 ActiveMQ(安全)&…

【腳踢數據結構】隊列(順序和鏈式)

(??? ),Hello我是祐言QAQ我的博客主頁:C/C語言,Linux基礎,ARM開發板,軟件配置等領域博主🌍快上🚘,一起學習,讓我們成為一個強大的攻城獅!送給自己和讀者的一句雞湯🤔&…

Ant Design Vue 下拉框輸入框 可以輸入 可以查詢

Ant Design Vue 下拉框 可以輸入 可以查詢 直接上代碼 效果圖 &#xff08;輸入內容查詢后端 返回下拉的值 &#xff0c;如何查詢后端是空的直接 把輸入的內容 賦值給 輸入框&#xff09; 在這里插入圖片描述 <template><div><a-selectv-model.lazy"i…

WPF CommunityToolkit.Mvvm

文章目錄 前言ToolkitNuget安裝簡單使用SetProperty&#xff0c;通知更新RealyCommandCanExecute 新功能&#xff0c;代碼生成器ObservablePropertyNotifyCanExecuteChangedForRelayCommand其他功能對應關系 NotifyPropertyChangedFor 前言 CommunityToolkit.Mvvm&#xff08;…

自適應AI chatgpt智能聊天創作官網html源碼

我們致力于開發先進的自適應AI智能聊天技術&#xff0c;旨在為用戶提供前所未有的聊天體驗。通過融合自然語言處理、機器學習和深度學習等領域的頂尖技術&#xff0c;我們的智能聊天系統能夠準確理解用戶的需求并給出相應的回應。 我們的自適應AI智能聊天系統具備以下核心特點…

MySQL面試題二

1、關系型和非關系型數據庫的區別&#xff1f; 關系型數據庫的優點 容易理解&#xff0c;因為它采用了關系模型來組織數據。 可以保持數據的一致性。 數據更新的開銷比較小。 支持復雜查詢&#xff08;帶 where 子句的查詢&#xff09; 非關系型數據庫&#xff08;NOSQL&#x…

fiddler抓包問題記錄,支持https、解決 tunnel to 443

fiddler下載安裝步驟及基本配置 fiddler抓包教程&#xff0c;如何抓取HTTPS請求&#xff0c;詳細教程 可能遇到的問題及解決方案 1. 不能正常訪問頁面&#xff08;所有https都無法訪問&#xff09; 解決方案&#xff1a;查看下面配置是否正確 Rules-customization 找到 OnB…

Vue中路由緩存問題及解決方法

一.問題 Vue Router 允許你在你的應用中創建多個視圖&#xff0c;并根據路由來動態切換這些視圖。默認情況下&#xff0c;當你從一個路由切換到另一個路由時&#xff0c;Vue Router 會銷毀前一個路由的組件實例并創建新的組件實例。然而&#xff0c;有時候你可能希望保持一些頁…

【推薦】深入淺出學習Spring框架【中】

目錄 1.AOP是什么? 2.案列&#xff1a; 3.spring的aop的專業術語 4.代碼模擬 4.1 前置通知 3.2.后置通知 3.3.環繞通知 3.4.異常通知 3.5.過濾通知 1.AOP是什么? 面向切面編程&#xff08;Aspect-Oriented Programming&#xff09;是一種編程范式&#xff0c;它的主要…

第十四屆中國大學生服務外包大賽細品,上百支隊伍與合合信息用AI共克“記賬”難題

前言 熟悉我的小伙伴應該知道我在大學時期參與了很多競賽&#xff0c;我向來對比賽是比較熱枕的&#xff0c;以我個人觀點&#xff0c;我認為可以通過競賽激發學習激情和檢驗自己的技能水平掌握情況&#xff0c;大學生很少有機會能夠了解到課堂之外市場的需求&#xff0c;外包…

P1123 取數游戲

取數游戲 題目描述 一個 N M N\times M NM 的由非負整數構成的數字矩陣&#xff0c;你需要在其中取出若干個數字&#xff0c;使得取出的任意兩個數字不相鄰&#xff08;若一個數字在另外一個數字相鄰 8 8 8 個格子中的一個即認為這兩個數字相鄰&#xff09;&#xff0c;求…

JWT(JSON Web Token )令牌

1、介紹 jwt就是將原始的json數據格式進行了安全的封裝&#xff0c;這樣就可以直接基于jwt在通信雙方安全的進行信息傳輸了。 2、jwt組成 第一部分&#xff1a;Header(頭&#xff09;&#xff0c; 記錄令牌類型、簽名算法等。 例如&#xff1a;{"alg":"HS256…

EXCEL按列查找,最終返回該列所需查詢序列所對應的值,VLOOKUP函數

EXCEL按列查找&#xff0c;最終返回該列所需查詢序列所對應的值 示例&#xff1a;國標行業分類漢字&#xff0c;匹配id 使用VLOOKUP函數 第一參數&#xff1a;拿去查詢的值。 第二參數&#xff1a;匹配的數據。 Ps&#xff1a;Sheet1!$C 21 : 21: 21:E 117 &#xff0c;需要…

Redis系列(三):深入解讀Redis主從同步機制

首發博客地址 https://blog.zysicyj.top/ Redis高可靠靠什么保證&#xff1f; 為什么要提這個呢&#xff0c;因為Redis主從庫目的呢其實就是為了實現高可靠。上篇文章中我們說過Redis的AOF、RDB日志其實就是為了減少數據丟失&#xff0c;這是高可靠的一部分。 這篇文章呢&#…

Lua 位和字節

一、位運算 從 Lua 5.3 版本開始&#xff0c;提供了針對數值類型的一組標準位運算符&#xff0c;與算數運算符不同的是&#xff0c;運算符只能用于整型數。 運算符描述&按位與|按位或&#xff5e;按位異或>>邏輯右移<<邏輯左移&#xff5e;&#xff08;一元運…

Git 如何使用TortoiseGit 操作本地倉庫

初始化倉庫 方法一: 新建一個文件夾,進入文件夾內部操作 1、右鍵--> 在這里創建Git 版本庫 注意: 不要直接在桌面上操作,否則桌面就是一個倉庫 方法二: 1、右鍵-->Git GUI here 方法三: 命令行模式 1、 git init 創建完畢倉庫,我們發現,此時我們創建的文件夾下…

leetcode做題筆記83刪除排序鏈表中的重復元素

給定一個已排序的鏈表的頭 head &#xff0c; 刪除所有重復的元素&#xff0c;使每個元素只出現一次 。返回 已排序的鏈表 。 輸入&#xff1a;head [1,1,2] 輸出&#xff1a;[1,2] 思路一&#xff1a;模擬題意 struct ListNode* deleteDuplicates(struct ListNode* head){i…

FreeRTOS qemu mps2-an385 bsp 移植制作 :系統運行篇

相關文章 FreeRTOS qemu mps2-an385 bsp 移植制作 &#xff1a;環境搭建篇 FreeRTOS qemu mps2-an385 bsp 移植制作 &#xff1a;系統啟動篇 開發環境 Win10 64位 VS Code&#xff0c;ssh 遠程連接 ubuntu VMware Workstation Pro 16 Ubuntu 20.04 FreeRTOSv202212.01&a…

React 全棧體系(二)

第二章 React面向組件編程 一、基本理解和使用 1. 使用React開發者工具調試 2. 效果 2.1 函數式組件 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>1_函數式組件</title> </head> &l…

計算機競賽 python 爬蟲與協同過濾的新聞推薦系統

1 前言 &#x1f525; 優質競賽項目系列&#xff0c;今天要分享的是 &#x1f6a9; python 爬蟲與協同過濾的新聞推薦系統 &#x1f947;學長這里給一個題目綜合評分(每項滿分5分) 難度系數&#xff1a;3分工作量&#xff1a;3分創新點&#xff1a;4分 該項目較為新穎&…