0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于PyTorch的深度學(xué)習(xí)入門教程之PyTorch的自動(dòng)梯度計(jì)算

ss ? 來源:雁回晴空 ? 作者:雁回晴空 ? 2021-02-16 15:26 ? 次閱讀

本文參考PyTorch官網(wǎng)的教程,分為五個(gè)基本模塊來介紹PyTorch。為了避免文章過長(zhǎng),這五個(gè)模塊分別在五篇博文中介紹。

Part1:PyTorch簡(jiǎn)單知識(shí)

Part2:PyTorch的自動(dòng)梯度計(jì)算

Part3:使用PyTorch構(gòu)建一個(gè)神經(jīng)網(wǎng)絡(luò)

Part4:訓(xùn)練一個(gè)神經(jīng)網(wǎng)絡(luò)分類器

Part5:數(shù)據(jù)并行化

本文是關(guān)于Part2的內(nèi)容。

Part2:PyTorch的自動(dòng)梯度計(jì)算

autograd package是PyTorch中所有神經(jīng)網(wǎng)絡(luò)的核心。先了解一些基本知識(shí),然后開始訓(xùn)練第一個(gè)神經(jīng)網(wǎng)絡(luò)。autograd package提供了Tensors上所有運(yùn)算的自動(dòng)求導(dǎo)功能。它是一個(gè)按運(yùn)行定義(define-by-run)的框架,這意味著反向傳播是依據(jù)代碼運(yùn)行情況而定義的,并且每一個(gè)單次迭代都可能不相同。

1 變量(Variable)

autograd.Variable 是這個(gè)package的中心類。它打包了一個(gè)Tensor,并且支持幾乎所有運(yùn)算。一旦你完成了你的計(jì)算,可以調(diào)用.backward(),所有梯度就可以自動(dòng)計(jì)算。

你可以使用.data屬性來訪問原始tensor。相對(duì)于變量的梯度值可以被積累到.grad中。

這里還有一個(gè)類對(duì)于自動(dòng)梯度的執(zhí)行是很重要的:Function(函數(shù))

變量和函數(shù)是相互關(guān)聯(lián)的,并且建立一個(gè)非循環(huán)圖。每一個(gè)變量有一個(gè).grad_fn屬性,它可以引用一個(gè)創(chuàng)建了變量的函數(shù)(除了那些用戶創(chuàng)建的變量——他們的grad_fn是空的)。

如果想要計(jì)算導(dǎo)數(shù),可以調(diào)用Variable上的.backward()。如果變量是標(biāo)量(只有一個(gè)元素),你不需要為backward()確定任何參數(shù)。但是,如果它有多個(gè)元素,你需要確定grad_output參數(shù)(這是一個(gè)具有匹配形狀的tensor)。

import torch
from torch.autograd import Variable

創(chuàng)建一個(gè)變量:

x = Variable(torch.ones(2, 2), requires_grad=True)
print(x)

對(duì)變量做一個(gè)運(yùn)算:

y = x + 2
print(y)

y作為一個(gè)運(yùn)算的結(jié)果被創(chuàng)建,所以它有g(shù)rad_fn。

print(y.grad_fn)

在y上做更多的運(yùn)算:

z = y * y * 3
out = z.mean()

print(z, out)

2 梯度(Gradients)

現(xiàn)在來做反向傳播。out.backward()等價(jià)于out.backward(torch.Tensor([1.0]))。

out.backward()

打印梯度 d(out)/dx

print(x.grad)

你應(yīng)該會(huì)得到一個(gè)元素為4.5的矩陣。

你可以使用autograd做很多瘋狂的事情。

x = torch.randn(3)
x = Variable(x, requires_grad=True)

y = x * 2
while y.data.norm() < 1000:
    y = y * 2

print(y)
gradients = torch.FloatTensor([0.1, 1.0, 0.0001])
y.backward(gradients)

print(x.grad)

責(zé)任編輯:xj

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 神經(jīng)網(wǎng)絡(luò)

    關(guān)注

    42

    文章

    4771

    瀏覽量

    100777
  • 深度學(xué)習(xí)
    +關(guān)注

    關(guān)注

    73

    文章

    5503

    瀏覽量

    121175
  • pytorch
    +關(guān)注

    關(guān)注

    2

    文章

    808

    瀏覽量

    13229
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    PyTorch 數(shù)據(jù)加載與處理方法

    PyTorch 是一個(gè)流行的開源機(jī)器學(xué)習(xí)庫(kù),它提供了強(qiáng)大的工具來構(gòu)建和訓(xùn)練深度學(xué)習(xí)模型。在構(gòu)建模型之前,一個(gè)重要的步驟是加載和處理數(shù)據(jù)。 1. Py
    的頭像 發(fā)表于 11-05 17:37 ?405次閱讀

    如何使用 PyTorch 進(jìn)行強(qiáng)化學(xué)習(xí)

    計(jì)算圖和自動(dòng)微分功能,非常適合實(shí)現(xiàn)復(fù)雜的強(qiáng)化學(xué)習(xí)算法。 1. 環(huán)境(Environment) 在強(qiáng)化學(xué)習(xí)中,環(huán)境是一個(gè)抽象的概念,它定義了智能體(agent)可以執(zhí)行的動(dòng)作(acti
    的頭像 發(fā)表于 11-05 17:34 ?298次閱讀

    Pytorch深度學(xué)習(xí)訓(xùn)練的方法

    掌握這 17 種方法,用最省力的方式,加速你的 Pytorch 深度學(xué)習(xí)訓(xùn)練。
    的頭像 發(fā)表于 10-28 14:05 ?215次閱讀
    <b class='flag-5'>Pytorch</b><b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>訓(xùn)練的方法

    pytorch怎么在pycharm中運(yùn)行

    第一部分:PyTorch和PyCharm的安裝 1.1 安裝PyTorch PyTorch是一個(gè)開源的機(jī)器學(xué)習(xí)庫(kù),用于構(gòu)建和訓(xùn)練神經(jīng)網(wǎng)絡(luò)。要在PyCharm中使用
    的頭像 發(fā)表于 08-01 16:22 ?1435次閱讀

    pytorch環(huán)境搭建詳細(xì)步驟

    PyTorch作為一個(gè)廣泛使用的深度學(xué)習(xí)框架,其環(huán)境搭建對(duì)于從事機(jī)器學(xué)習(xí)深度學(xué)習(xí)研究及開發(fā)的人
    的頭像 發(fā)表于 08-01 15:38 ?824次閱讀

    pytorch和python的關(guān)系是什么

    PyTorch已經(jīng)成為了一個(gè)非常受歡迎的框架。本文將介紹PyTorch和Python之間的關(guān)系,以及它們?cè)?b class='flag-5'>深度學(xué)習(xí)領(lǐng)域的應(yīng)用。 Python簡(jiǎn)介 Python是一種高級(jí)、解釋型、通用
    的頭像 發(fā)表于 08-01 15:27 ?1972次閱讀

    PyTorch深度學(xué)習(xí)開發(fā)環(huán)境搭建指南

    PyTorch作為一種流行的深度學(xué)習(xí)框架,其開發(fā)環(huán)境的搭建對(duì)于深度學(xué)習(xí)研究者和開發(fā)者來說至關(guān)重要。在Windows操作系統(tǒng)上搭建
    的頭像 發(fā)表于 07-16 18:29 ?1059次閱讀

    基于PyTorch的卷積核實(shí)例應(yīng)用

    深度學(xué)習(xí)計(jì)算機(jī)視覺領(lǐng)域,卷積操作是一種至關(guān)重要的技術(shù),尤其在圖像處理和特征提取方面發(fā)揮著核心作用。PyTorch作為當(dāng)前最流行的深度
    的頭像 發(fā)表于 07-11 15:19 ?464次閱讀

    pytorch中有神經(jīng)網(wǎng)絡(luò)模型嗎

    當(dāng)然,PyTorch是一個(gè)廣泛使用的深度學(xué)習(xí)框架,它提供了許多預(yù)訓(xùn)練的神經(jīng)網(wǎng)絡(luò)模型。 PyTorch中的神經(jīng)網(wǎng)絡(luò)模型 1. 引言 深度
    的頭像 發(fā)表于 07-11 09:59 ?701次閱讀

    PyTorch的介紹與使用案例

    學(xué)習(xí)領(lǐng)域的一個(gè)重要工具。PyTorch底層由C++實(shí)現(xiàn),提供了豐富的API接口,使得開發(fā)者能夠高效地構(gòu)建和訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型。PyTorch不僅支持動(dòng)態(tài)計(jì)算圖,還提供了強(qiáng)大的
    的頭像 發(fā)表于 07-10 14:19 ?399次閱讀

    tensorflow和pytorch哪個(gè)更簡(jiǎn)單?

    : TensorFlow和PyTorch都是用于深度學(xué)習(xí)和機(jī)器學(xué)習(xí)的開源框架。TensorFlow由Google Brain團(tuán)隊(duì)開發(fā),而PyTorc
    的頭像 發(fā)表于 07-05 09:45 ?873次閱讀

    解讀PyTorch模型訓(xùn)練過程

    PyTorch作為一個(gè)開源的機(jī)器學(xué)習(xí)庫(kù),以其動(dòng)態(tài)計(jì)算圖、易于使用的API和強(qiáng)大的靈活性,在深度學(xué)習(xí)領(lǐng)域得到了廣泛的應(yīng)用。本文將深入解讀
    的頭像 發(fā)表于 07-03 16:07 ?1072次閱讀

    PyTorch的特性和使用方法

    使用Python重新寫了很多內(nèi)容,使其更加靈活易用。它不僅是一個(gè)擁有自動(dòng)求導(dǎo)功能的深度神經(jīng)網(wǎng)絡(luò)框架,還可以看作是一個(gè)加入了GPU支持的NumPy。PyTorch支持動(dòng)態(tài)圖,允許在運(yùn)行時(shí)構(gòu)建計(jì)算
    的頭像 發(fā)表于 07-02 14:27 ?566次閱讀

    如何使用PyTorch建立網(wǎng)絡(luò)模型

    PyTorch是一個(gè)基于Python的開源機(jī)器學(xué)習(xí)庫(kù),因其易用性、靈活性和強(qiáng)大的動(dòng)態(tài)圖特性,在深度學(xué)習(xí)領(lǐng)域得到了廣泛應(yīng)用。本文將從PyTorch
    的頭像 發(fā)表于 07-02 14:08 ?420次閱讀

    TensorFlow與PyTorch深度學(xué)習(xí)框架的比較與選擇

    深度學(xué)習(xí)作為人工智能領(lǐng)域的一個(gè)重要分支,在過去十年中取得了顯著的進(jìn)展。在構(gòu)建和訓(xùn)練深度學(xué)習(xí)模型的過程中,深度
    的頭像 發(fā)表于 07-02 14:04 ?973次閱讀