深度學習--神經網絡

一、深度學習的簡單概念

????????深度學習是一種模仿人類大腦的運行方式,從大量數據中學習特征的學習模式。

? ? ? ? 深度學習是機器學習的子集,它與機器學習的關系如下:

二、感知神經網絡

2.1簡單定義

????????神經網絡(Neural Networks)是一種模擬人腦神經元網絡結構的計算模型,用于處理復雜的模式識別、分類和預測等任務。

????????神經網絡由多個互相連接的節點(即人工神經元)組成。

三、人工神經元

? ? ? ? 定義:人工神經元是神經網絡的基本構建單位。核心功能是接受輸入信號,經過加權求和∑和非線性激活函數f處理后,輸出結果。

3.1構造人工神經元

? ? ? ? 人工神經元接受信息輸入之后經過加權求和處理,在經過激活函數處理(這個不是非得有的過程),最后將結果輸出。

????????理解圖像如下:

3.2組成部分

? ? ? ? 根據3.1的圖像我們可以觀察到x,w,b,∑,f,現進行一一解釋:

(1)X:輸入input,代表輸入數據,通常包含n個特征量,即用向量表示。每一個輸入值對應一個權重;

(2)W:權重weight,每一條輸入數據都有自己的權重,它表示的是該輸入對最終結果的重要程度;

(3)b:偏置bias,一個可調參數,類似于截距,幫助調整模型的輸出;

(4)∑:加權求和,輸入數據*權重之后再求和,最后加上偏置;

(5)f:激活函數,用于將加權求和后的結果轉換為輸出結果,引入非線性特性,使神經網絡能夠處理復雜的任務。

3.3數學表示

數學公式:

3.4對比生物神經元

人工神經元和生物神經元對比如下表:

生物神經元人工神經元
細胞核節點 (加權求和 + 激活函數)
樹突輸入
軸突帶權重的連接
突觸輸出

四、深入神經網絡(重點)

? ? ? ? 神經網路是由大量神經單元連接構成的計算模型。每一個神經元的輸出作為下一層的輸入,最后得到神經網絡的輸出。

4.1基本結構

(1)輸入層:神經網絡的第一層,主要是接收輸入信息,不進行計算;

(2)隱藏層:位于輸入層和輸出層之間,進行特征提取和轉換。一般有多個層,且每一層一般有多個神經單元;

(3)輸出層:神經網絡的最后一層,產生最終的結果。

4.2網絡構建

神經元:方框

4.3全連接神經網絡

定義:每一層的神經元與上一層的所有神經元全連接,一般用于圖像分類,文本分類等任務。

?根據3.1的圖像我們可以觀察到x,w,b,∑,f,并且進行了一一解釋:

(1)X:輸入input,代表輸入數據,通常包含n個特征量,即用向量表示。每一個輸入值對應一個權重;

(2)W:權重weight,每一條輸入數據都有自己的權重,它表示的是該輸入對最終結果的重要程度;

(3)b:偏置bias,一個可調參數,類似于截距,幫助調整模型的輸出;

(4)∑:加權求和,輸入數據*權重之后再求和,最后加上偏置;

(5)f:激活函數,用于將加權求和后的結果轉換為輸出結果,引入非線性特性,使神經網絡能夠處理復雜的任務。

現在我們要了解一下這幾個參數的數據形式,如何組成的:

(1)X輸入:(batch_size,in_features),輸入樣本條數,輸入特征數量;

(2)W權重:(out_features,in_features),輸出特征數量,輸入特征數量;

(3)b偏置:(out_features),輸出特征數量;

(4)Z輸出:(batch_size,out_features),輸入樣本條數,輸出特征數量;

? ? ? ? 4.3.1特點

全連接神經網絡的特點

(1)全連接層:層與層之間都是相互連接的,后一個神經元與前一個神經元相連;

(2)權重數量:神經元之間是全連接的,權重數都不相同,權重個數多(權重數量太高容易導致模型復雜度高,計算量大,消耗時間長);

(3)學習能力強:能夠學習輸入數據的全局特征。

? ? ? ? 4.3.2計算步驟

(1)數據傳輸:輸入數據經過每一層的計算,逐層傳遞到輸出層;

(2)激活函數:每一層的輸出通過激活函數處理后再輸出;

(3)損失計算:在輸出層計算預測值與真實值之間的差距,即損失函數值;

(4)反向傳播:通過backward算法計算每個權重的梯度,并更新權重。

? ? ? ? 4.3.3基本組件認知

4.3.3.1線性層組件
(1)介紹

? ? ? ? 線性層:神經網絡中常用的層類型,主要用于將輸入數據通過線性變換映射到輸出空間。

API:

from torch import nn

nn.Linear(in_features,out_features,bias=True)

解釋:

in_features:輸入特征的數量;

out_features:輸出特征的數量;

bias:是否設置偏置項,為True則表示設置偏置,為False則表示不設置偏置。

注意:定義單線性層的時候可以不用寫類方法,直接調用nn.Linear就好。

非單線性層時,要注意后一層的輸入要與前一層的輸出對應,要填一樣。

(2)代碼實現

有兩種實現方式:

a.自定義類,依次完成對初始化、對前向方法的描述;

(1)自定義神經網絡類,繼承nn.Model;

(2)初始化方法,定義線性層;

(3)實現前向傳播方法

代碼示例:

import torch
from torch import nnclass mynn(nn.Module):def __init__(self,input_size):super().__init__()# 定義線性層self.fc1 = nn.Linear(input_size,64)self.fc2 = nn.Linear(64,32)self.fc3 = nn.Linear(32,1)def forward(self,x):x = self.fc1(x)x = self.fc2(x)x = self.fc3(x)return  xinput_size = 32
model = mynn(input_size)
print(model)

結果:

mynn(
(fc1): Linear(in_features=32, out_features=64, bias=True)
(fc2): Linear(in_features=64, out_features=32, bias=True)
(fc3): Linear(in_features=32, out_features=1, bias=True)
)

b.調用nn.Sequential模型,不用再寫對前向傳播的邏輯描述。

(1)定義輸入特征量;

(2)直接調用API,創建模型;

(3)打印結果

代碼示例:

from torch import nn
in_featrues = 32
model = nn.Sequential(nn.Linear(in_featrues,64),nn.Linear(64,32),nn.Linear(32,1)
)
print(model)

結果:

Sequential(
(0): Linear(in_features=32, out_features=64, bias=True)
(1): Linear(in_features=64, out_features=32, bias=True)
(2): Linear(in_features=32, out_features=1, bias=True)
)

4.3.3.2激活函數組件

定義:主要是運用在隱藏層引入非線性,讓神經網絡學習更復雜的規律,使網絡具備非線性能力,增強其表達能力。

常見的損失函數:

API:import torch.nn.function as F

(1)sigmoid函數:會出現梯度消失問題 sigmoid = F.sigmoid()

(2)tanh函數:會出現梯度消失問題 tanh = F.tanh()

(3)ReLU函數:x小于等于0會出現數據丟失問題 relu = F.ReLU()

(4)LakyReLU函數:解決了數據丟失問題 leakyrelu = F.LakyReLU()

(5)softmax函數:可用來做分類 softmax = F.softmax()

4.3.3.3損失函數組件

定義:損失函數是用來量化預測值與真實值之間的差異。

常用的損失函數主要分為兩大類:import torch.nn as nn

(1)回歸

均方誤差損失MSE Loss:Loss = nn.MSELoss()

平均絕對誤差損失 L1 Loss:Loss = nn.L1Loss()

(2)分類

交叉熵損失:Loss = nn.CrossEntropyLoss()---多分類

二元交叉熵損失:Loss = nn.BCEWithLogitsLoss()---二分類

4.3.3.4優化器

定義:是用于更新模型參數以最小化損失函數的核心工具。常常定義在損失criterion后。

常用的優化器:

  • SGD(隨機梯度下降)

  • Adagrad(自適應梯度)

  • RMSprop(均方根傳播)

  • Adam(自適應矩估計)

核心方法:

梯度清零:zero_grad()

參數更新:step()

? ? ? ? 4.3.4創建全連接神經網絡

我們以求函數的參數為例,介紹全連接神經網絡如何解決參數問題。

已知? ?x = torch.tensor([1, 2, 3, 4, 5], dtype=torch.float)
y = torch.tensor([3, 5, 7, 9, 11], dtype=torch.float)

兩個初始數據,現在我們要寫一個線性回歸函數,求參數解。

步驟:

(1)數據輸入;

(2)調用模型;

(3)定義學習率,批次,損失,優化器

(4)循環:前向傳播、損失函數、優化器梯度清理、反向傳播、優化器參數更新

(5)打印結果

代碼示例;

import torch
from torch import nn,optim
#基本數據輸入
x = torch.tensor([1, 2, 3, 4, 5], dtype=torch.float).view(5,1)
y = torch.tensor([3, 5, 7, 9, 11], dtype=torch.float).view(5,1)
#調用模型
model = nn.Linear(1,1)
#定義lr,epochs,criterion,optimizer
lr = 0.02
epochs = 300
criterion = nn.MSELoss()
optimizer = optim.SGD(model.parameters(),lr=lr)
#循環,前向傳播、Loss、梯度清零、反向傳播、梯度更新
for epoch in range(epochs):y_pred = model(x)Loss = criterion(y,y_pred)optimizer.zero_grad()Loss.backward()optimizer.step()
#打印結果
print('權重為',model.weight,'偏置為',model.bias)

結果:

權重為 Parameter containing:
tensor([[2.0241]], requires_grad=True) 偏置為 Parameter containing:
tensor([0.9129], requires_grad=True)

五、小結

? ? ? ? 本節內容我們大致對神經元有了一些基礎了解,以及全連接神經網絡的基本認識和基本操作。尤其是基本組件的部分,這個部分很重要,要清楚創建全連接網絡的基本步驟,后續創建奠定基礎。

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

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

相關文章

.NET 程序的強名稱簽名與安全防護技術干貨

在 .NET 開發領域,保障程序的安全性和完整性至關重要。強名稱簽名和有效的安全防護措施是實現這一目標的關鍵手段。下面將詳細介紹 .NET 程序的強名稱簽名以及相關的安全防護方法。一、什么是強名稱簽名強名稱簽名是 .NET 框架提供的一種安全機制,其主要…

DNS(Domain Name System,域名系統)

目錄 **一、DNS的核心功能****二、DNS的工作原理****1. 解析流程(以車載導航請求為例)****2. 關鍵機制****三、車載以太網中DNS的特殊性**1. **高可靠性要求**2. **低延遲優化**3. **安全挑戰與防護****四、DNS相關協議與技術****五、車載DNS配置示例****六、DNS故障排查工具…

優化 ECharts 多條折線:折線數據不完整導致的X軸日期錯亂問題

目錄 一、簡單介紹 1.1 常見類型 二、時間軸錯亂問題 2.1 示例 2.2 示例完整代碼 2.3 問題分析 2.4 修復方法 第一步 第二步 2.5 優化后完整代碼 一、簡單介紹 ECharts 是一款基于 JavaScript 的數據可視化圖表庫,動態圖表是 ECharts 的一個重要應用場景…

網絡安全之注入攻擊:原理、危害與防御之道

網絡安全之注入攻擊:原理、危害與防御之道 引言 在OWASP Top 10安全風險榜單中,注入攻擊常年占據首位。2023年Verizon數據泄露調查報告顯示,67%的Web應用漏洞與注入類攻擊直接相關。本文從技術視角系統解析注入攻擊的核心原理、典型場景及防御…

Python爬蟲動態IP代理報錯全解析:從問題定位到實戰優化

目錄 一、代理IP失效:爬蟲的"隱形殺手" 1.1 失效場景復現 1.2 解決方案 二、403封禁:反爬機制的"精準打擊" 2.1 封禁原理剖析 2.2 破解方案 三、速度瓶頸:代理性能的"致命短板" 3.1 性能對比測試 3.2…

機器學習基礎知識【 激活函數、損失函數、優化器、 正則化、調度器、指標函數】

目錄標題機器學習基礎知識概覽激活函數 (Activation Functions)損失函數 (Loss Functions / Cost Functions)優化器 (Optimizers)正則化 (Regularization)調度器 (Schedulers / Learning Rate Schedulers)指標函數 (Metric Functions)其他重要概念訓練流程機器學習基礎知識概覽…

【達夢數據庫|JPA】后端數據庫國產化遷移記錄

項目背景 經典的springbootjpa,java1.8數據庫MySQL需要遷移到國產化數據庫達夢上 開發環境安裝 最簡單的方式: 官方網站下載安裝時選擇“典型安裝”即可 Linux安裝 國產化一律上docer不要猶豫 下載三方提供的docker鏡像按頁面文檔啟動即可同上下載官…

ubuntu22默認安裝firefox使用snap安裝還老打不開解決辦法

終極解決方案(100% 避免 Snap 版 Firefox) 步驟 1:徹底移除 Snap 版 Firefox bash sudo snap remove --purge firefox 步驟 2:添加 Mozilla 官方 PPA(提供 .deb 版 Firefox) bash sudo add-apt-repository …

MyBatis02-mybatis-config.xml配置文件講解

mybatis-config.xml 是 MyBatis 的核心配置文件&#xff0c;用于配置整個 MyBatis 框架的全局行為&#xff0c;比如環境&#xff08;數據源&#xff09;、事務、類型別名、插件、Mapper 映射等。示例&#xff1a;<?xml version"1.0" encoding"UTF-8" ?…

合上電腦不關機

在Debian 系統上&#xff0c;如何實現合上電腦不關機的效果&#xff1f; 可以修改配置文件&#xff1a; sudo vim /etc/systemd/logind.conf1.找到 HandleLidSwitch &#xff0c;將其值改為 ignore &#xff08;處理蓋子開關為忽略&#xff09; 2.將 LidSwitchIgnoreInhibited …

服務器深夜告警?可能是攻擊前兆!

凌晨三點&#xff0c;刺耳的告警鈴聲把你從夢中驚醒&#xff1a;服務器CPU 100%&#xff0c;內存耗盡&#xff01;你手忙腳亂地登錄服務器&#xff0c;發現某個進程瘋狂占用資源。是程序Bug&#xff1f;還是業務突增&#xff1f;排查半天&#xff0c;最后在角落的日志里發現蛛絲…

重學前端003 --- CSS 顏色

文章目錄文檔聲明head顏色模型div根據在這里 Freecodecamp 實踐&#xff0c;記錄筆記總結。 文檔聲明 在文檔頂部添加 DOCTYPE html 聲明 <!DOCTYPE html>head title 元素為搜索引擎提供了有關頁面的額外信息。 它還通過以下兩種方式顯示 title 元素的內容&#xff1a…

學弟讓我幫忙寫一個學生管理系統的后端,我直接上科技

&#x1f4dd;個人主頁&#xff1a;哈__ 期待您的關注 目錄 一、飛算AI簡介 二、系統開發 2.1 需求提出 2.2 系統模塊的設計 2.3 數據庫表格設計 2.4 接口規范設計 2.5 源碼生成 三、總結 學弟這兩天有一個小組合作的任務&#xff0c;應該是培訓吧要寫一個學生管理…

《P3038 [USACO11DEC] Grass Planting G》

題目描述 給出一棵有 n 個節點的樹&#xff0c;有 m 個如下所示的操作&#xff1a; 將兩個節點之間的 路徑上的邊 的權值均加一。 查詢兩個節點之間的 那一條邊 的權值&#xff0c;保證兩個節點直接相連。 初始邊權均為 0。 輸入格式 第一行兩個整數 n,m&#xff0c;含義…

NestJS

文章的地址 NestJShttps://equinox-primrose-ceb.notion.site/NestJS-22d4b8031e0f80b39fc7fe1ff111f802 不產生測試的.spec.ts文件的配置 "generateOptions": {"spec": false }創建模型 nest g m xx 創建服務 nest g s xx 創建處理 nest g c xx CRU…

vue入門學習教程

一、介紹 vue是一款用于構建用戶界面的 JavaScript 框架。基于標準 HTML、CSS 和 JavaScript 構建&#xff0c;并提供了一套聲明式的、組件化的編程模型&#xff0c;幫助你高效地開發用戶界面。 二、使用和安裝 方法1&#xff1a;在html代碼中直接使用<script>導入&…

C++類對象多態基礎語法【超詳細】

文章目錄前言1. 虛函數1.1 現象1.2 多態1.3 析構函數1.4 override和final1.5 重載、隱藏、重寫對比2. 抽象類2.1 抽象類特性2.2 抽象類的應用場景3. 多態實現的底層原理4. 靜態綁定和動態綁定5. 總結前言 多態是面向對象三大特性之一&#xff0c;也是細節最多的語法之一。學習…

Flask 入門到實戰(3):用 SQLAlchemy 優雅操作數據庫

深入理解 Flask ORM&#xff1a;用 SQLAlchemy 優雅操作數據庫一、前言&#xff1a;什么是 ORM&#xff1f;為什么要用它&#xff1f; 傳統數據庫操作要寫 SQL&#xff0c;比如&#xff1a; SELECT * FROM users WHERE id 1;而使用 ORM 后&#xff0c;你可以這樣寫&#xff1a…

源表=電源+數字表?一文看懂SMU源表 2025-04-14

源表(Source Meter Unit, SMU)廣泛用于半導體器件、材料、醫療、發光器件與光通信等行業,測量器件的伏安(I-V)特性曲線、絕緣材料的電阻值(電阻率)、電容的絕緣電阻(漏電流)、光電器件的暗電流或者L-I-V等。 源表的名稱已經清晰的告訴我們,它包含了高精度電源輸出和…

單片機STM32F103:DMA的原理以及應用

STM32F103系列微控制器&#xff08;基于ARM Cortex-M3內核&#xff09;集成了**DMA&#xff08;Direct Memory Access&#xff0c;直接內存訪問&#xff09;**控制器&#xff0c;用于在存儲器與外設、存儲器與存儲器之間高效傳輸數據&#xff0c;減少CPU的干預&#xff0c;從而…