PyTorch筆記5----------Autograd、nn庫

1.Autograd

  • grad和grad_fn
    • grad:該tensor的梯度值,每次在計算backward時都需要將前一時刻的梯度歸零,否則梯度值會一直累加
    • grad_fn:葉子結點通常為None,只有結果節點的grad_fn才有效,用于只是梯度函數時哪種類型
  • torch.autograd.backward(tensors,grad_tensors,retain_graph,create_graph)
    • 參數tensors:用于計算梯度的tensor
    • 參數grad_tensors:在計算矩陣的梯度時會用到
    • 參數retain_graph:通常在調用一次backward后,pytorch會自動把計算圖銷毀,所以想要對某個變量重復調用backward,則需要將該參數值設為True,默認值為False
    • 參數create_graph:如果為True,則會創建一個專門計算微分的圖
  • torch.autograd.grad(output,input,grad_output,retain_graph,create_graph,only_input,allow_unused)
    • 計算和返回output關于input的梯度的和
    • 參數output:函數的因變量,即需要求導的函數
    • 參數input:函數的自變量
    • 參數grad_output、retain_graph、create_graph:同backward
    • 參數only_input:值為True時只計算input的梯度
    • 參數allow_unused:值為False時,當計算輸出出錯時,指明不使用inpiu
  • torch.autograd.Function
    • 每一個原始的自動求導運算實際上是兩個在tensor上運行的函數
      • forward函數:計算從輸入tensor獲得的輸出tensor
      • backward函數:接收輸出tensor對于某個標量值的梯度,并且計算輸入tensor相對于該相同標量值的梯度
      • 利用apply方法執行相應的運算
import torch
class line(torch.autograd.Function):@staticmethoddef forward(ctx, w, x, b):ctx.save_for_backward(w,x,b)return w * x + b@staticmethoddef backward(ctx,grad_out):w,x,b = ctx.saved_tensorsgrad_w = grad_out * xgrad_x = grad_out * wgrad_b = grad_outreturn grad_w, grad_x, grad_b
w = torch.rand(2,2,requires_grad=True)
x = torch.rand(2,2,requires_grad=True)
b = torch.rand(2,2,requires_grad=True)
out = line.apply(w,x,b)
out.backward(torch.ones(2,2))
print(w,x,b)
print(w.grad)
print(x.grad)
print(b.grad)
  • 其他torch.autograd包中的函數
    • torch.autograd.enable_grad:啟動梯度計算的上下文管理器
    • torch.autograd.no_grad:禁止梯度計算的上下文管理器
    • torch.autograd.set_grad_enabled(mode):設置是否進行梯度計算的上下文管理器

2.nn庫

torch.nn庫是專門為神經網絡設計的模塊化接口,自動計算前向傳播和反向傳播,可以用來定義和運行神經網絡。

  • nn.Parameter & nn.ParameterList & nn.ParameterDict
    • 定義可訓練參數
  • nn.Linear & nn.conv2d & nn.ReLU & nn.MaxPool2d & nn.MSELoss
    • 各種神經網絡層的定義,繼承于nn.Module的子類
  • nn.functional
    • 包含了torch.nn庫中所有的函數,包含大量loss和activation function
    • nn.functional.xxx是函數接口
    • nn.functional.xxx無法與nn.Sequential結合使用
  • nn.Sequential
    • 通過一個序列的方法完成對一個網絡的定義
  • nn.ModuleList
    • 用于搭建一個網絡模型
  • nn.MouduleDict
    • 通過字典的方式搭建一個網絡模型

具體案例使用,后期在神經網絡的學習中

?知識點為聽課總結筆記,課程為B站“2025最新整合!公認B站講解最強【PyTorch】入門到進階教程,從環境配置到算法原理再到代碼實戰逐一解讀,比自學效果強得多!”:2025最新整合!公認B站講解最強【PyTorch】入門到進階教程,從環境配置到算法原理再到代碼實戰逐一解讀,比自學效果強得多!_嗶哩嗶哩_bilibili

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

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

相關文章

Perl 格式化輸出

Perl 格式化輸出 引言 Perl 是一種通用、解釋型、動態編程語言,廣泛應用于文本處理、系統管理、網絡編程等領域。在Perl編程中,格式化輸出是一種常見的需求,它可以幫助開發者更好地展示和打印信息。本文將詳細講解Perl中格式化輸出的方法&…

Python爬蟲實戰:研究markdown2庫相關技術

一、引言 1.1 研究背景與意義 在當今信息爆炸的時代,互聯網上的信息量呈指數級增長。如何高效地獲取和整理這些信息成為了一個重要的研究課題。網絡爬蟲作為一種自動獲取網頁內容的技術,能夠按照一定的規則,自動地抓取萬維網信息,為信息的收集提供了有力手段。 Markdown …

【Linux】基本指令詳解(二) 輸入\輸出重定向、一切皆文件、認識管道、man、cp、mv、echo、cat

文章目錄一、man指令二、輸入/輸出重定向(echo、一切皆文件)三、cp指令四、mv指令五、cat指令六、more/less指令七、head/tail指令八、管道初見一、man指令 Linux的指令有很多參數,我們不可能全記住,可以通過查看聯機手冊獲取幫助。 man 指令…

MVC HTML 幫助器

MVC HTML 幫助器 引言 MVC(模型-視圖-控制器)是一種流行的軟件架構模式,它將應用程序的邏輯分解為三個主要組件:模型(Model)、視圖(View)和控制器(Controller&#xff09…

linux下手工安裝ollama0.9.6

1、去下載ollama的linux版的壓縮包: 地址:https://github.com/ollama/ollama/releases2、上傳到linux中。3、解壓: tar zxvf ollama-linux-amd64-0.9.6.tgz -C /usr/local/4、如果僅僅是要手工執行,已經可以了: ollama…

kotlin布局交互

將 wrapContentSize() 方法鏈接到 Modifier 對象,然后傳遞 Alignment.Center 作為實參以將組件居中。Alignment.Center 會指定組件同時在水平和垂直方向上居中。 DiceWithButtonAndImage(modifier Modifier.fillMaxSize().wrapContentSize(Alignment.Center) )創建…

50天50個小項目 (Vue3 + Tailwindcss V4) ? | ToastNotification(推送通知)

&#x1f4c5; 我們繼續 50 個小項目挑戰&#xff01;—— ToastNotification組件 倉庫地址&#xff1a;https://github.com/SunACong/50-vue-projects 項目預覽地址&#xff1a;https://50-vue-projects.vercel.app/ 使用 Vue 3 的 Composition API&#xff08;<script s…

學習筆記(34):matplotlib繪制圖表-房價數據分析與可視化

學習筆記(34):matplotlib繪制圖表-房價數據分析與可視化分析房價分布情況&#xff0c;通過直方圖、核密度估計和正態分布擬合來直觀展示房價的分布特征&#xff0c;并進行統計檢驗。一、房價數據分析與可視化&#xff0c;代碼分析1.1、導入必要的庫import pandas as pd import …

前端三劍客之CSS

1. CSS 簡介1) CSS 簡述CSS&#xff0c;即層疊樣式表&#xff08;英文全稱&#xff1a;Cascading Style Sheets&#xff09;&#xff0c;是一種專門用于修飾 HTML 文檔呈現樣式的計算機語言。它的功能不僅限于靜態美化網頁&#xff0c;還能與各類腳本語言配合&#xff0c;實現對…

力扣25.7.11每日一題——無需開會的工作日

Description 這題類似合并區間&#xff0c;題意你們都能看懂吧…… Solution 這道題就需要用到合并區間的方法。 答案等于 daysdaysdays 減「有會議安排的天數」。 對左端點進行排序&#xff0c;計算有會議安排的天數&#xff0c;累加每個區間的長度&#xff0c;即為有會議…

每日一SQL 【銷售分析 III】

文章目錄問題案例執行順序使用分組解決問題 案例 執行順序 SQL 語句的執行順序&#xff08;核心步驟&#xff09; 同一層級的select查詢內部, 別名在整個 SELECT 計算完成前不生效 使用分組解決 select distinct s.product_id, Product.product_name from Sales sleft join …

輕輕松松帶你進行-負載均衡LVS實戰

8. LVS部署命令介紹 8.1 LVS軟件相關信息 1.程序包&#xff1a;ipvsadm 2.Unit File: ipvsadm.service 3.主程序&#xff1a;/usr/sbin/ipvsadm 4.規則保存工具&#xff1a;/usr/sbin/ipvsadm-save 5.規則重載工具&#xff1a;/usr/sbin/ipvsadm-restore 6.配置文件&#xff1a…

C#.NET 集合框架詳解

簡介 C# 集合框架是處理數據集合的核心組件&#xff0c;位于 System.Collections 和 System.Collections.Generic 命名空間。它提供了多種數據結構來高效存儲和操作數據。 集合框架概覽 System.Collections (非泛型老版) └─ System.Collections.Generic (泛…

網絡劫持對用戶隱私安全的影響:一場無形的數據竊取危機

在互聯網時代&#xff0c;網絡劫持如同一把“隱形鐮刀”&#xff0c;悄然威脅著用戶的隱私安全。當我們在瀏覽網頁、使用社交媒體或進行在線交易時&#xff0c;看似正常的網絡連接背后&#xff0c;可能正暗藏著數據被竊取的風險。網絡劫持通過多種技術手段干預用戶與服務器的正…

使用 Helm 下載 Milvus 安裝包(Chart)指南

目錄 &#x1f4e6; 使用 Helm 下載 Milvus 安裝包&#xff08;Chart&#xff09;指南 &#x1f6e0; 環境準備 &#x1f680; 第一步&#xff1a;添加 Milvus Helm 倉庫 &#x1f50d; 第二步&#xff1a;查看可用版本 &#x1f4e5; 第三步&#xff1a;下載指定版本的 C…

EXTI 外部中斷

目錄 STM32中斷 NVIC 中斷控制器 NVIC優先級分組 EXTI 外部中斷 AFIO 復用IO口 外部中斷/事件控制器&#xff08;EXTI&#xff09;框圖 STM32中斷 在STM32微控制器中&#xff0c;共有68個可屏蔽中斷通道&#xff0c;涵蓋了多個外設&#xff0c;如外部中斷&#xff08;EXT…

WebApplicationType.REACTIVE 的webSocket

通用請求體類 Data ApiModel("websocket請求消息") public class WebSocketRequest<T> implements Serializable {private static final long serialVersionUID 1L;/*** 參考&#xff1a;com.mcmcnet.gacne.basic.service.common.pojo.enumeration.screen.AiB…

降本增效!自動化UI測試平臺TestComplete并行測試亮點

在跨平臺自動化測試中&#xff0c;企業常面臨設備投入高、串行測試耗時長、測試覆蓋率難以兼顧的困境。自動化UI測試平臺TestComplete的并行測試引擎提供了有效的解決方案&#xff1a;通過云端海量設備池與CI/CD深度集成&#xff0c;實現多平臺、多瀏覽器并行測試&#xff0c;顯…

云、實時、時序數據庫混合應用:醫療數據管理的革新與展望(上)

云、實時、時序數據庫混合應用:醫療數據管理的革新與展望 1、引言 1.1 研究背景與意義 在信息技術飛速發展的當下,醫療行業正經歷著深刻的數字化轉型。這一轉型不僅是技術層面的革新,更是關乎醫療體系未來發展方向的深刻變革。從醫療服務的提供方式,到醫療管理的模式,再…

代碼隨想錄算法訓練營十六天|二叉樹part06

LeetCode 530 二叉搜索樹的最小絕對差 題目鏈接&#xff1a;530. 二叉搜索樹的最小絕對差 - 力扣&#xff08;LeetCode&#xff09; 給你一個二叉搜索樹的根節點 root &#xff0c;返回 樹中任意兩不同節點值之間的最小差值 。 差值是一個正數&#xff0c;其數值等于兩值之差…