PyTorch梯度:深度學習的引擎與實戰解析

一、梯度:深度學習中的指南針

1.1 什么是梯度?

梯度是函數在某一點變化率最大的方向及其大小,就像爬山時最陡峭的上坡方向。在深度學習中,梯度告訴我們如何調整神經網絡參數,使損失函數最小化。

1.2 梯度的重要性

  • 參數更新:通過梯度下降算法調整權重
  • 誤差反向傳播:計算各層參數對最終損失的貢獻
  • 優化基礎:所有現代深度學習優化器的基礎

二、PyTorch梯度計算入門

在這里插入圖片描述

2.1 自動微分機制

PyTorch的autograd包會自動追蹤張量的計算歷史,構建計算圖,并自動計算梯度。

2.2 基礎示例:線性回歸

import torch# 創建輸入數據和參數
x = torch.tensor([1.0, 2.0, 3.0], requires_grad=True)  # 輸入特征,開啟梯度追蹤
w = torch.tensor([2.0], requires_grad=True)            # 權重
b = torch.tensor([1.0], requires_grad=True)            # 偏置# 前向計算
y_pred = w * x + b# 定義損失函數(均方誤差)
y_true = torch.tensor([6.0, 9.0, 12.0])
loss = ((y_pred - y_true) ** 2).mean()# 反向傳播計算梯度
loss.backward()# 查看梯度
print(f"w的梯度: {w.grad}")  # tensor([4.6667])
print(f"b的梯度: {b.grad}")  # tensor([3.0000])

2.3 梯度更新參數

# 學習率設置
learning_rate = 0.01# 手動更新參數
with torch.no_grad():  # 禁用梯度追蹤w -= w.grad * learning_rateb -= b.grad * learning_rate# 清空梯度
w.grad.zero_()
b.grad.zero_()

三、常用函數的梯度計算

3.1 線性函數

函數:y = w*x + b
梯度:dy/dw = x,dy/db = 1(標量情況下)

3.2 ReLU激活函數

函數:f(x) = max(0, x)
梯度:

  • 當x > 0時,df/dx = 1
  • 當x ≤ 0時,df/dx = 0

示例:

x = torch.tensor([-1.0, 0.0, 2.0], requires_grad=True)
y = torch.relu(x)
y.sum().backward()
print(x.grad)  # tensor([0., 0., 1.])

3.3 Sigmoid激活函數

函數:σ(x) = 1 / (1 + e^(-x))
梯度:dσ/dx = σ(x) * (1 - σ(x))

示例:

x = torch.tensor([0.0], requires_grad=True)
y = torch.sigmoid(x)
y.backward()
print(x.grad)  # tensor([0.2500])  # σ(0)=0.5,0.5*(1-0.5)=0.25

3.4 Softmax函數

函數:將輸入轉化為概率分布
梯度:?softmax(x_i)/?x_j = softmax(x_i)(δ_ij - softmax(x_j))

四、梯度計算的關鍵技巧

4.1 梯度清零

在訓練循環中必須清零梯度,否則梯度會累積:

optimizer.zero_grad()  # 或者 w.grad.zero_()

4.2 梯度計算模式

PyTorch默認跟蹤所有需要梯度的操作,但在不需要梯度時可使用torch.no_grad()提升性能:

with torch.no_grad():# 在此塊中進行評估或參數更新

五、實際應用場景

5.1 多層神經網絡

import torch.nn as nnmodel = nn.Sequential(nn.Linear(10, 5),nn.ReLU(),nn.Linear(5, 1)
)# 前向傳播自動構建計算圖
output = model(input_data)
loss = loss_function(output, target)# 反向傳播自動計算各層梯度
loss.backward()

5.2 自定義梯度

對于特殊運算,可使用torch.autograd.Function自定義前向和反向計算:

import torchclass CustomReLU(torch.autograd.Function):@staticmethoddef forward(ctx, input):# 前向計算:ReLU函數ctx.save_for_backward(input)  # 保存輸入用于反向計算return input.clamp(min=0)@staticmethoddef backward(ctx, grad_output):# 反向傳播:梯度計算input, = ctx.saved_tensors  # 獲取保存的前向輸入grad_input = grad_output.clone()grad_input[input < 0] = 0   # 負數區域的梯度置零return grad_input

關鍵點解析

1. 前向傳播 (forward)
  • 執行ReLU計算:input.clamp(min=0)
  • 使用ctx.save_for_backward()保存中間變量,供反向傳播使用
2. 反向傳播 (backward)
  • grad_output:上游傳遞來的梯度(即損失函數對ReLU輸出的梯度)
  • 根據ReLU特性:負數區域的導數為0,因此將對應位置的梯度置零
  • 返回值:損失函數對輸入的梯度

六、總結

梯度是深度學習的驅動力,PyTorch的自動微分系統讓梯度計算變得簡單直觀。理解梯度的工作原理和計算方式,是掌握神經網絡訓練的關鍵。通過本文的示例,希望讀者能夠:

  1. 理解梯度的概念和作用
  2. 掌握PyTorch中梯度計算的基本方法
  3. 熟悉常用激活函數的梯度特性
  4. 能夠應用到實際模型訓練中

記住,梯度只是工具,真正的挑戰在于如何設計網絡結構、選擇合適的損失函數和優化策略,以及處理實際問題中的各種挑戰。但掌握梯度計算,無疑是邁出了深度學習實踐的重要一步!

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

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

相關文章

【Python爬蟲】詳細入門指南

目錄 一、簡單介紹 二、詳細工作流程以及組成部分 三、 簡單案例實現 一、簡單介紹 在當今數字化信息飛速發展的時代&#xff0c;數據的獲取與分析變得愈發重要&#xff0c;而網絡爬蟲技術作為一種能夠從互聯網海量信息中自動抓取所需數據的有效手段&#xff0c;正逐漸走入…

Golang|Channel 相關用法理解

文章目錄 用 channel 作為并發小容器channel 的遍歷channel 導致的死鎖問題用 channel 傳遞信號用 channel 并行處理文件用channel 限制接口的并發請求量用 channel 限制協程的總數量 用 channel 作為并發小容器 注意這里的 ok 如果為 false&#xff0c;表示此時不僅channel為空…

Windows單機模擬MySQL主從復制

這里寫自定義目錄標題 下載MySQL ZIP壓縮包安裝主庫1、創建配置文件2、安裝服務3、初始化數據庫4、啟動服務5、配置主庫 安裝從庫1、配置ini文件2、安裝服務3、初始化數據庫4、啟動服務5、配置從庫6、驗證從庫狀態 操作主庫驗證 下載MySQL ZIP壓縮包 https://dev.mysql.com/do…

OSPF路由引入

一、基本概念與作用 1.OSPF路由引入指通過自治系統邊界路由器&#xff08;ASBR&#xff09;將外部路由&#xff08;如BGP、RIP、靜態路由或其他OSPF進程的路由&#xff09;注入當前OSPF域&#xff0c;實現跨協議或跨區域的網絡互通?。 其核心作用包括&#xff1a; ?擴展網…

弱口令爆破

1.簡單介紹 弱口令是指一些簡單易猜的密碼&#xff0c;可通過社工方式和一些爆破工具進行破解&#xff0c;以下介紹一款爆破工具的用法。burpsuite簡稱BP&#xff0c;一款可以利用字典破解賬戶密碼的工具。 2.部署網站 可以使用PHPstudy的Apache服務&#xff0c;也可以使用I…

Vue3+Vite前端項目部署后部分圖片資源無法獲取、動態路徑圖片資源報404錯誤的原因及解決方案

目錄 Vue3vite前端項目部署后部分圖片資源無法獲取、動態路徑圖片資源報404錯誤的原因及解決方案 一、情景介紹 1、問題出現的場景 2、無法加載的圖片寫法 二、反向代理原理簡介 三、造成該現象的原因 四、解決方案 1、放棄動態渲染 2、在頁面掛載的時候引入圖片資源 …

詳解如何從零用 Python復現類似 GPT-4o 的多模態模型

&#x1f9e0; 向所有學習者致敬&#xff01; “學習不是裝滿一桶水&#xff0c;而是點燃一把火。” —— 葉芝 我的博客主頁&#xff1a; https://lizheng.blog.csdn.net &#x1f310; 歡迎點擊加入AI人工智能社區&#xff01; &#x1f680; 讓我們一起努力&#xff0c;共創…

榕壹云無人共享系統:基于SpringBoot+MySQL+UniApp的物聯網共享解決方案

無人共享經濟下的技術革新 隨著無人值守經濟模式的快速發展&#xff0c;傳統共享設備面臨管理成本高、效率低下等問題。榕壹云無人共享系統依托SpringBootMySQLUniApp技術棧&#xff0c;結合物聯網與移動互聯網技術&#xff0c;為商家提供低成本、高可用的無人化運營解決方案。…

基于PHP的酒店網上訂房系統(源碼+lw+部署文檔+講解),源碼可白嫖!

摘要 酒店服務是旅游行業的一個重要組成部分&#xff0c;它的作用已經從過去的單一的住宿、結算帳務向全面、高水平的服務型酒店轉變。酒店的服務工作貫穿于整個酒店的市場營銷、預定、入住、退房、結賬等環節&#xff0c;酒店要提高整體工作水平&#xff0c;簡化工作程序&…

【Linux生成SSH秘鑰實現遠程連接】Linux生成SSH秘鑰對與修改服務配置文件實現無密碼遠程連接

文章目錄 前言1. Linux 生成SSH秘鑰對2. 修改SSH服務配置文件3. 客戶端秘鑰文件設置4. 本地SSH私鑰連接測試5. Linux安裝Cpolar工具6. 配置SSHTCP公網地址7. 遠程SSH私鑰連接測試8. 固定SSH公網地址9. 固定SSH地址測試 前言 在數字化江湖中&#xff0c;企業對各種技術的需求就…

# linux 設置寬容模式

linux 設置寬容模式 在Linux系統中&#xff0c;通常沒有直接稱為“寬容模式”的設置選項&#xff0c;但你可以通過幾種方式來模擬或調整系統行為&#xff0c;使其表現得更加“寬容”&#xff0c;特別是在處理錯誤、權限問題或其他潛在問題時。以下是一些常見的方法&#xff1a…

【C++】——lambda表達式

&#x1f31f; 前言:??C Lambda表達式,當函數開始"叛逆期"?? 你是否有過這樣的崩潰瞬間&#xff1f; 為了寫個??只用到一次??的排序規則&#xff0c;被迫定義了一個類在std::for_each里塞函數指針&#xff0c;代碼瞬間變成"古董級"寫法看著層的循環…

深入解析B站androidApp接口:從bilibili.api.ticket.v1.Ticket/GetTicket到SendMsg的技術分析

前言 最近一段時間&#xff0c;我對B站的App接口進行了深入分析&#xff0c;特別是關注了認證機制和私信功能的實現。通過逆向工程和網絡抓包&#xff0c;發現了B站移動端API的底層工作原理&#xff0c;包括設備標識生成機制、認證流程和消息傳輸協議。本文將分享這些研究成果…

從零開始學A2A一:A2A 協議概述與核心概念

A2A 協議概述與核心概念 學習目標 基礎理解 掌握A2A協議的基本概念和背景理解協議的設計原則和核心思想了解協議在AI領域的重要性 技術掌握 熟悉A2A協議的核心功能組件掌握能力發現和任務管理機制理解多模態交互和安全通信原則 實踐應用 能夠設計基于A2A的智能體系統掌握協議…

2025.04.10-拼多多春招筆試第三題

?? 點擊直達筆試專欄 ??《大廠筆試突圍》 ?? 春秋招筆試突圍在線OJ ?? 筆試突圍OJ 03. 數字重排最大化問題 問題描述 LYA是一位專業的數字設計師。她手中有兩個數字序列 s 1 s_1

蒼穹外賣day04

Spring Task實現定時處理訂單狀態 作用&#xff1a;不需要輸入提示信號&#xff0c;便可定時自動執行程序 使用步驟 1、啟動類上加上注解&#xff08;EnableScheduling&#xff09;開啟定時任務調度 2、專門創建一個包來管理執行定時任務的類&#xff0c;該類需要交給IOC容…

BFD:網絡鏈路檢測與聯動配置全攻略

目錄 BFD簡介 BFD會話建立方式和檢測機制 BFD會話建立過程 BFD工作流程 聯動功能 BFD與OSPF聯動配置需求 BFD與OSPF聯動配置實現 BFD與VRRP聯動配置需求 BFD與VRRP聯動配置實現 單臂回聲 BFD默認參數及調整方法 BFD簡介 一種全網統一、檢測迅速、監控網絡中鏈…

【LLM】A2A 與 MCP:剖析 AI Agent 互聯時代的兩種關鍵協議

隨著人工智能技術的飛速發展&#xff0c;AI Agent&#xff08;智能體&#xff09;正從理論走向實踐&#xff0c;有望成為提升生產力的關鍵。然而&#xff0c;正如歷史上任何新興技術領域一樣&#xff0c;標準的缺失導致了“筒倉效應”——不同來源、不同框架構建的 Agent 難以有…

免費下載 | 2025清華五道口:“十五五”金融規劃研究白皮書

《2025清華五道口&#xff1a;“十五五”金融規劃研究白皮書》的核心內容主要包括以下幾個方面&#xff1a; 一、五年金融規劃的重要功能與作用 凝聚共識&#xff1a;五年金融規劃是國家金融發展的前瞻性謀劃和戰略性安排&#xff0c;通過廣泛聽取社會各界意見&#xff0c;凝…

滾輪控制目標臂長度調整相機距離

通過鼠標滾輪來控制攝像機目標臂長度 , 調整相機距離 看圖就行,不多說,照著連就完事了