小白的進階之路系列之十----人工智能從初步到精通pytorch綜合運用的講解第三部分

本文將介紹Autograd基礎。

PyTorch的Autograd特性是PyTorch靈活和快速構建機器學習項目的一部分。它允許在一個復雜的計算中快速而簡單地計算多個偏導數(也稱為梯度)。這個操作是基于反向傳播的神經網絡學習的核心。

autograd的強大之處在于它在運行時動態地跟蹤你的計算,這意味著如果你的模型有決策分支,或者循環的長度直到運行時才知道,計算仍然會被正確地跟蹤,你會得到正確的梯度來驅動學習。這一點,再加上模型是用Python構建的這一事實,提供了比依賴于靜態分析更嚴格的結構模型來計算梯度的框架更大的靈活性。

我們需要Autograd做什么?

機器學習模型是一個函數,有輸入和輸出。在這個討論中,我們將把輸入作為一個i維向量 x ? \vec{x} x ,帶有元素 x i x_i xi?. 然后我們可以將模型M表示為輸入的向量值函數: y ? = M ? ( x ? ) \vec{y}=\vec{M}(\vec{x}) y ?=M (x )(我們把M的輸出值當作一個向量,因為一般來說,一個模型可以有任意數量的輸出。)

由于我們將主要在訓練的背景下討論自梯度,我們感興趣的輸出將是模型的損失。損失函數 L ( y ? ) = L ( M ? ( x ? ) ) L(\vec{y})=L(\vec{M}(\vec{x})) L(y ?)=L(M (x ))是模型輸出的單值標量函數。該函數表示我們的模型預測與特定輸入的理想輸出之間的距離。注意:在這一點之后,我們通常會在上下文清楚的地方省略向量符號-例如: y y y而不是 y ? \vec{y} y ?

在訓練模型時,我們希望將損失最小化。在一個完美模型的理想情況下,這意味著調整它的學習權值——也就是函數的可調參數——使得所有輸入的損失為零。在現實世界中,這意味著一個不斷調整學習權重的迭代過程,直到我們看到對于各種各樣的輸入,我們得到了一個可以容忍的損失。

我們如何決定將重物推多遠,朝哪個方向?我們想要最小化損失,這意味著使它對輸入的一階導數等于0。即 ? L ? x = 0 \frac{\partial{L}}{\partial{x}}=0 ?x?L?=0

但是,回想一下,損失不是直接來自輸入,而是模型輸出的函數(直接是輸入的函數), ? L ? x = ? L ( y ? ) ? x \frac{\partial{L}}{\partial{x}}=\frac{\partial{L(\vec{y})}}{\partial{x}} ?x?L?=?x?L(y ?)?. 根據微分的鏈式法則,我們有 ? L ( y ? ) ? x = ? L ( y ? ) ? y ? ? M ( x ) ? x \frac{\partial{L(\vec{y})}}{\partial{x}}=\frac{\partial{L(\vec{y})}}{\partial{y}}*\frac{\partial{M(x)}}{\partial{x}} ?x?L(y ?)?=?y?L(y ?)???x?M(x)?。在這個式子中, ? M ( x ) ? x \frac{\partial{M(x)}}{\partial{x}} ?x?M(x)?就是事情變得復雜的地方。模型輸出相對于其輸入的偏導數,如果我們再次使用鏈式法則展開表達式,將涉及對模型中每個乘法學習權值、每個激活函數和每個其他數學變換的許多局部偏導數。每個這樣的偏導數的完整表達式是通過計算圖的每個可能路徑的局部梯度的乘積的和,該計算圖以我們試圖測量的梯度的變量結束。

特別是,我們對學習權值上的梯度很感興趣——它們告訴我們改變每個權值的方向,以使損失函數更接近于零。

由于這種局部導數的數量(每個對應于模型計算圖中的單獨路徑)將隨著神經網絡的深度呈指數增長,計算它們的復雜性也會呈指數增長。這就是autograd的用武之地:它跟蹤每一次計算的歷史。PyTorch模型中的每個計算張量都攜帶其輸入張量和用于創建它的函數的歷史記錄。結合PyTorch函數意味著作用于張量的事實,每個函數都有一個內置的實現來計算它們自己的導數,這大大加快了學習所需的局部導數的計算速度。

一個簡單的例子

這是很多的理論——但是在實踐中使用自動光柵是什么樣子的呢?

讓我們從一個簡單的例子開始。首先,我們將做一些導入來繪制結果:

# %matplotlib inlineimport torchimport matplotlib.pyplot as plt
import matplotlib.ticker as ticker
import math

接下來,我們將創建一個輸入張量,它在區間上充滿了均勻間隔的值[0,2π],并指定requires_grad=True。(像大多數創建張量的函數一樣,torch.linspace()接受一個可選的requires_grad選項。)設置此標志意味著在接下來的每個計算中,autograd將在該計算的輸出張量中積累計算的歷史。

a = torch.linspace(0., 2. * math.pi, steps=25

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

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

相關文章

43. 遠程分布式測試實現

43. 遠程分布式測試實現詳解 一、遠程測試環境配置 1.1 遠程WebDriver服務定義 # Chrome瀏覽器遠程服務地址 chrome_url rhttp://localhost:5143# Edge瀏覽器遠程服務地址 edge_url rhttp://localhost:9438關鍵概念:每個URL對應一個獨立的WebDriver服務典型配置…

Python爬蟲(40)基于Selenium與ScrapyRT構建高并發動態網頁爬蟲架構:原理、實現與性能優化

目錄 一、引言二、技術背景1. 動態頁面處理痛點2. 架構設計目標 三、核心組件詳解1. Selenium Grid集群部署2. ScrapyRT服務化改造3. 智能等待策略 四、系統架構圖五、性能優化實踐1. 資源隔離策略2. 并發控制算法3. 監控體系 六、總結與展望🌈Python爬蟲相關文章&a…

【存儲基礎】SAN存儲基礎知識

文章目錄 1. 什么是SAN存儲?2. SAN存儲組網架構3. SAN存儲的主要協議SCSI光纖通道(FC)協議iSCSIFCoENVMe-oFIB 4. SAN存儲的關鍵技術Thin Provision:LUN空間按需分配Tier:分級存儲Cache:緩存機制QoS&#x…

TDengine 運維——巡檢工具(定期檢查)

背景 TDengine 在運行一段時間后需要針對運行環境和 TDengine 本身的運行狀態進行定期巡檢,本文檔旨在說明如何使用巡檢工具對 TDengine 的運行環境進行自動化檢查。 安裝工具使用方法 工具支持通過 help 參數查看支持的語法 Usage: taosinspect [OPTIONS]Check…

DHCP應用

一、DHCP介紹 在LAN(局域網)中我們常會遇到以下的情況: 1.不知道如何配置IP地址及相關信息的員工,無法上網;2.IP地址配置沖突,無法上網;3.來訪用戶因不熟悉公司網絡情況無法上網; 以上這些情況都是日常最…

LabVIEW多按鍵自動化檢測系統

LabVIEW開發一套高精度按鍵力與行程自動化檢測系統,針對傳統檢測設備自動化程度低、定位誤差大等痛點,實現多按鍵產品的全流程自動化測試。系統集成 6 軸工業機器人、高精度傳感器及實時數據處理模塊,滿足汽車電子、消費電子等領域對按鍵手感…

嵌入式硬件篇---蜂鳴器

蜂鳴器是一種常用的電子發聲元件,主要分為有源蜂鳴器和無源蜂鳴器兩類。它們在結構、工作原理、驅動方式、應用場景等方面存在顯著差異。以下是詳細介紹: 一、核心定義與結構差異 1. 有源蜂鳴器 定義: “有源” 指內部自帶振蕩電路&#x…

600+純CSS加載動畫一鍵獲取指南

CSS-Loaders.com 完整使用指南:600純CSS加載動畫庫 🎯 什么是 CSS-Loaders.com? CSS-Loaders.com 是一個專門提供純CSS加載動畫的資源網站,擁有超過600個精美的單元素加載器。這個網站的最大特色是所有動畫都只需要一個HTML元素…

國內高頻混壓PCB廠家有哪些?

一、技術領先型廠商(聚焦材料與工藝突破) 獵板PCB 技術亮點:真空層壓工藝實現FR-4與羅杰斯高頻材料(RO4350B/RO3003)混壓,阻抗公差3%,支持64單元/板的5G天線模塊,插損降低15%。 應用…

volatile,synchronized,原子操作實現原理,緩存一致性協議

文章目錄 緩存一致性協議(MESI)volatile1. volatile 的作用2.volatile的底層實現3,volatile 實現單例模式的雙重鎖(面手寫) synchronized1,基本用法2,可重入性3,Java對象頭4,實現原理(1)代碼塊同步的實現&a…

webfuture:如何屏蔽后臺發文界面的保存為新文章按鈕?

問題描述: 如何屏蔽后臺發文界面的保存為新文章按鈕? 問題解決:修改這個文件 /Admin/Content/Base/css/base.css 定義這個的id saveAsNewItemSubmit #saveAsNewItemSubmit{display: none;}

SpringBoot集成第三方jar的完整指南

原文地址:https://blog.csdn.net/weixin_43826336/article/details/141640152?ops_request_misc%257B%2522request%255Fid%2522%253A%25227d4118ef2d572ba4428caf83f1d2bb28%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id7d4118…

題目 3293: 藍橋杯2024年第十五屆決賽真題-數位翻轉

題目 3293: 藍橋杯2024年第十五屆決賽真題-數位翻轉 時間限制: 2s 內存限制: 192MB 提交: 1046 解決: 318 題目描述 小明創造了一個函數 f(x) 用來翻轉 x 的二進制的數位(無前導 0)。比如f(11) 13,因為 11 (1011)2,將其左右翻轉…

word為跨頁表格新加表頭和表名

問題: 當表格過長需要跨頁時(如下圖所示),某些格式要求需要轉頁接排加續表。 方法一: 1、選中表格,在“表布局”區域點開“自動調整”,選擇“固定列寬”(防止后續拆分表格后表格變…

Ubuntu上進行VS Code的配置

1. 安裝VS code sudo snap install code --classic 2. 安裝GCC sudo apt install build-essential 3. 安裝VS Code中文包 打開 VS Code 點擊左側活動欄中的擴展圖標(或按Ctrl+Shift+X) 在搜索框中輸入:Chinese (Simplified) 選擇由 Microsoft 提供的 中文(簡體)語言包…

vr中風--數據處理模型搭建與訓練2

位置http://localhost:8888/notebooks/Untitled1-Copy1.ipynb # -*- coding: utf-8 -*- """ MUSED-I康復評估系統(增強版) 包含:多通道sEMG數據增強、混合模型架構、標準化處理 """ import numpy as np impor…

【LLM vs Agent】從語言模型到智能體,人工智能邁出的關鍵一步

目錄 一、什么是 LLM?語言的天才,思維的起點 ? 特點小結: 二、什么是 Agent?智能的執行者,自主的決策者 ? 特點小結: 三、LLM 與 Agent 的關系:是工具,更是大腦 四、案例實戰…

安裝DockerDocker-Compose

Docker 1、換掉關鍵文件 vim /etc/yum.repos.d/CentOS-Base.repo ▽ [base] nameCentOS-$releasever - Base - Mirrors Aliyun baseurlhttp://mirrors.aliyun.com/centos/$releasever/os/$basearch/ gpgcheck1 enabled1 gpgkeyhttp://mirrors.aliyun.com/centos/RPM-GPG-KEY-C…

Perl One-liner 數據處理——基礎語法篇【匠心】

Perl(Practical Extraction and Report Language)是一種功能強大且靈活的腳本語言,因其強大的文本處理能力和簡潔的語法而廣受開發者和系統管理員的喜愛。特別是在命令行環境下,Perl 的 one-liner(單行腳本&#xff09…

Go語言defer關鍵字:延遲執行的精妙設計

深度解析Go語言defer關鍵字:延遲執行的精妙設計 引言 在Go語言中,defer語句是一種獨特而強大的控制流機制,它通過??延遲執行??的方式解決資源管理、錯誤處理和異常恢復等關鍵問題。理解defer的工作原理是掌握Go并發編程和錯誤處理的關鍵…