最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

pytorch 簡介及常用工具包展示

 更新時(shí)間:2023年02月24日 14:43:43   作者:人工智能有點(diǎn)  
Pytorch是torch的python版本,是由Facebook開源的神經(jīng)網(wǎng)絡(luò)框架,專門針對 GPU 加速的深度神經(jīng)網(wǎng)絡(luò)(DNN)編程,這篇文章主要介紹了pytorch 簡介及常用工具包展示,需要的朋友可以參考下

一、pytorch 簡介

  • Pytorch是torch的python版本,是由Facebook開源的神經(jīng)網(wǎng)絡(luò)框架,專門針對 GPU 加速的深度神經(jīng)網(wǎng)絡(luò)(DNN)編程。Torch 是一個(gè)經(jīng)典的對多維矩陣數(shù)據(jù)進(jìn)行操作的張量
    (tensor )庫,在機(jī)器學(xué)習(xí)和其他數(shù)學(xué)密集型應(yīng)用有廣泛應(yīng)用。
  • Pytorch的計(jì)算圖是動(dòng)態(tài)的,可以根據(jù)計(jì)算需要實(shí)時(shí)改變計(jì)算圖。
  • 由于Torch語言采用 Lua,導(dǎo)致在國內(nèi)一直很小眾,并逐漸被支持 Python 的 Tensorflow 搶走用戶。作為經(jīng)典機(jī)器學(xué)習(xí)庫 Torch 的端口,PyTorch 為 Python 語言使用者提供了舒適的寫代碼選擇。

二、pytorch 優(yōu)勢

  • 1.簡潔:
    PyTorch的設(shè)計(jì)追求最少的封裝,盡量避免重復(fù)造輪子。不像 TensorFlow 中充斥著session、graph、operation、name_scope、variable、tensor、layer等全新的概念,PyTorch 的設(shè)計(jì)遵循tensor→variable(autograd)→nn.Module 三個(gè)由低到高的抽象層次,分別代表高維數(shù)組(張量)、自動(dòng)求導(dǎo)(變量)和神經(jīng)網(wǎng)絡(luò)(層/模塊),而且這三個(gè)抽象之間聯(lián)系緊密,可以同時(shí)進(jìn)行修改和操作。
  • 2.速度:
    PyTorch 的靈活性不以速度為代價(jià),在許多評測中,PyTorch 的速度表現(xiàn)勝過 TensorFlow和Keras 等框架。
  • 3.易用:
    PyTorch 是所有的框架中面向?qū)ο笤O(shè)計(jì)的最優(yōu)雅的一個(gè)。PyTorch的面向?qū)ο蟮慕涌谠O(shè)計(jì)來源于Torch,而Torch的接口設(shè)計(jì)以靈活易用而著稱,Keras作者最初就是受Torch的啟發(fā)才開發(fā)了Keras。
  • 4.活躍的社區(qū):
    PyTorch 提供了完整的文檔,循序漸進(jìn)的指南,作者親自維護(hù)的論壇,供用戶交流和求教問題。Facebook 人工智能研究院對 PyTorch 提供了強(qiáng)力支持。

三、pytorch 常用工具包

  1. torch :類似 NumPy 的張量庫,支持GPU;
  2. torch.autograd :基于 type 的自動(dòng)區(qū)別庫,支持 torch 之中的所有可區(qū)分張量運(yùn)行;
  3. torch.nn :為最大化靈活性而設(shè)計(jì),與 autograd 深度整合的神經(jīng)網(wǎng)絡(luò)庫;
  4. torch.optim:與 torch.nn 一起使用的優(yōu)化包,包含 SGD、RMSProp、LBFGS、Adam 等標(biāo)準(zhǔn)優(yōu)化方式;
  5. torch.multiprocessing: python 多進(jìn)程并發(fā),進(jìn)程之間 torch Tensors 的內(nèi)存共享;
  6. torch.utils:數(shù)據(jù)載入器。具有訓(xùn)練器和其他便利功能;
  7. torch.legacy(.nn/.optim) :出于向后兼容性考慮,從 Torch 移植來的 legacy 代碼;

四、pytorch 注意點(diǎn)

特別注意一個(gè)問題:
通道問題:不同視覺庫對于圖像讀取的方式不一樣,圖像通道也不一樣:
opencv 的 imread 默認(rèn)順序時(shí) H * W * C
pytorch的Tensor是 C * H * W
Tensorflow是兩者都支持

五、pytorch 理解

  1. numpy風(fēng)格的tensor操作
    • pytorch對tensor提供的API參照了numpy
  2. 變量自動(dòng)求導(dǎo)
    • 在計(jì)算過程形成的計(jì)算圖中,參與的變量可快速計(jì)算出自己對于目標(biāo)函數(shù)的梯度
  3. 神經(jīng)網(wǎng)絡(luò)求導(dǎo)及損失函數(shù)優(yōu)化等高層封裝
    • 網(wǎng)絡(luò)層封裝在torch.nn
    • 損失函數(shù)封裝在torch.functional
    • 優(yōu)化函數(shù)封裝在torch.optim

六、pytorch-Tensor

1. tensor 數(shù)據(jù)類型

tensor數(shù)據(jù)類型:3浮點(diǎn)(float16,float32,float64)5整數(shù)(int16,int32,int64,int8+uint8)

Data typedtypeCPU tensorGPU tensor
16-bit floating pointtorch.float16 or torch.halftorch.HalfTensortorch.cuda.HalfTensor
32-bit floating pointtorch.float32 or torch.floattorch.FloatTensortorch.cuda.FloatTensor
64-bit floating pointtorch.float64 or torch.doubletorch.DoubleTensortorch.cuda.DoubleTensor
Data typedtypeCPU tensorGPU tensor
8-bit integer(unsigned)torch.uint8torch.ByteTensortorch.cuda.ByteTensor
8-bit integer(signed)torch.int8torch.CharTensortorch.cuda.CharTensor
16-bit integer(signed)torch.int16 or torch.shorttorch.ShortTensortorch.cuda.ShortTensor
32-bit integer(signed)torch.int32 or torch.inttorch.IntTensortorch.cuda.IntTensor
64-bit integer(signed)torch.int64 or torch.longtorch.LongTensortorch.cuda.LongTensor

2. 創(chuàng)建 tensor 相關(guān)的 API

創(chuàng)建tensor的常見api

方法名說明
Tensor()直接從參數(shù)構(gòu)造張量,支持list和numpy數(shù)組
eye(row,column)創(chuàng)建指定行數(shù)&列數(shù)的單位tensor(單位陣)
linspace(start,end,count)在[s,e]上創(chuàng)建c個(gè)元素的一維tensor
logspace(start,end,count)在[10s,10e]上創(chuàng)建c個(gè)元素的一維tensor
ones(size)返回指定shape的tensor,元素初始值為1
zeros(size)返回指定shape的tensor,元素初始值為0
ones_like(t)返回一個(gè)tensor,shape與t相同,且元素初始值為1
zeros_like(t)返回一個(gè)tensor,shape與t相同,且元素初始值為1
arange(s,e,sep)在區(qū)間[s,e)上以間隔sep生成一個(gè)序列張量

3. tensor 對象的 API

tensor 對象的方法

方法名作用
size()返回張量的shape
numel()計(jì)算tensor的元素個(gè)數(shù)
view(shape)修改tensor的shape,與np.reshape相似,view返回的是對象的共享內(nèi)存
resize類似于view,但在size超出時(shí)會(huì)重新分配內(nèi)存空間
item若為單元素tensor,則返回python的scalar
from_numpy從numpy數(shù)據(jù)填充
numpy返回ndarray類型

七、python 自動(dòng)求導(dǎo)

tensor對象通過一系列運(yùn)算組成動(dòng)態(tài)圖,每個(gè)tensor對象都有以下幾個(gè)控制求導(dǎo)的屬性。

變量作用
requird_grad默認(rèn)為False,表示變量是狗需要計(jì)算導(dǎo)數(shù)
grad_fn變量的梯度函數(shù)
grad變量對應(yīng)的梯度

八、pytorch 神經(jīng)網(wǎng)絡(luò)

torch.nn提供了創(chuàng)建神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)構(gòu)件,這些層都繼承自Module類。下面是自己手動(dòng)實(shí)現(xiàn)一個(gè)線性層(linear layer)。適當(dāng)參考,以后直接調(diào)用現(xiàn)成的接口,這里稍微了解一下,無實(shí)際意義。 ????

import torch

class Linear(torch.nn.Module):
    def __init__(self, in_features, out_features, bias=True):
        super(Linear, self).__init__()
        # torch.randn() 返回一個(gè)符合均值為0,方差為1的正態(tài)分布
        self.weight = torch.nn.Parameter(torch.randn(out_features, in_features))
        if bias:
            self.bias = torch.nn.Parameter(torch.randn(out_features))

    def forward(self, x):
        # xW+b
        x = x.mm(self.weight)
        if self.bias:
            x = x + self.bias.expand_as(x)
        return x

if __name__ == '__main__':
    
    net = Linear(3,2)
    x = net.forward
    print('11',x)

下面表格中列出了比較重要的神經(jīng)網(wǎng)絡(luò)層組件
對應(yīng)的在nn.functional模塊中,提供這些層對應(yīng)的函數(shù)實(shí)現(xiàn)。
通常對于可訓(xùn)練參數(shù)的層使用module,而對于不需要訓(xùn)練參數(shù)的層如softmax這些,可以使用functional中的函數(shù)。

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-dnU00LSM-1649391626450)(photo/圖片.png)]

一些容器:

容器類型功能
Module神經(jīng)網(wǎng)絡(luò)模塊基類
Sequential序貫?zāi)P?,類似keras,用于構(gòu)建序列型神經(jīng)網(wǎng)絡(luò)
ModuleList用于存儲(chǔ)層,不接受輸入
Parameters(t)模塊的屬性,用于保存其訓(xùn)練參數(shù)
ParameterList參數(shù)列表1

容器代碼:

# 方法1 像
model1 = nn.Sequential()
model.add_module('fc1', nn.Linear(3,4))
model.add_module('fc2', nn.Linear(4,2))
model.add_module('output', nn.Softmax(2))

# 方法2
model2 = nn.Sequential(
          nn.Conv2d(1,20,5),
          nn.ReLU(),
          nn.Conv2d(20,64,5),
          nn.ReLU()
        )
# 方法3        
model3 = nn.ModuleList([nn.Linear(3,4), nn.ReLU(), nn.Linear(4,2)])
  • torch.nn.Module提供了神經(jīng)網(wǎng)絡(luò)的基類,當(dāng)實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)時(shí)需要繼承自此模塊,并在初始化函數(shù)中創(chuàng)建網(wǎng)絡(luò)需要包含的層,并實(shí)現(xiàn)forward函數(shù)完成前向計(jì)算,網(wǎng)絡(luò)的反向計(jì)算會(huì)由自動(dòng)求導(dǎo)機(jī)制處理。
  • 通常將需要訓(xùn)練的層寫在init函數(shù)中,將參數(shù)不需要訓(xùn)練的層在forward方法里調(diào)用對應(yīng)的函數(shù)來實(shí)現(xiàn)相應(yīng)的層。

編碼三步走:

在pytorch中就只需要分三步:

  1. 寫好網(wǎng)絡(luò);
  2. 編寫數(shù)據(jù)的標(biāo)簽和路徑索引;
  3. 把數(shù)據(jù)送到網(wǎng)絡(luò)。

到此這篇關(guān)于pytorch 簡介及常用工具包展示的文章就介紹到這了,更多相關(guān)pytorch 常用工具包內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python實(shí)現(xiàn)日常記賬本小程序

    python實(shí)現(xiàn)日常記賬本小程序

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)日常記賬本小程序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • 關(guān)于Python中的同步異步阻塞與非阻塞

    關(guān)于Python中的同步異步阻塞與非阻塞

    這篇文章主要介紹了關(guān)于Python中的同步異步阻塞與非阻塞,具有一定的參考價(jià)值,有需要的朋友可以看一下
    2023-03-03
  • python3 如何使用 goto 跳轉(zhuǎn)執(zhí)行到指定代碼行

    python3 如何使用 goto 跳轉(zhuǎn)執(zhí)行到指定代碼行

    這篇文章主要介紹了python3 使用goto跳轉(zhuǎn)執(zhí)行到指定代碼行的操作,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python異步編程之yield?from的用法詳解

    Python異步編程之yield?from的用法詳解

    yield?from?是Python3.3?后新加的語言結(jié)構(gòu),可用于簡化yield表達(dá)式的使用,這篇文章主要為大家詳細(xì)介紹了yield?from的用法,需要的可以了解一下
    2023-12-12
  • 使用pyinstaller打包.exe文件的詳細(xì)教程

    使用pyinstaller打包.exe文件的詳細(xì)教程

    PyInstaller是一個(gè)跨平臺(tái)的Python應(yīng)用打包工具,能夠把 Python 腳本及其所在的 Python 解釋器打包成可執(zhí)行文件,下面這篇文章主要給大家介紹了關(guān)于使用pyinstaller打包.exe文件的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • python map比for循環(huán)快在哪

    python map比for循環(huán)快在哪

    這篇文章主要介紹了python 為什么map比for循環(huán)快,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-09-09
  • Django框架的使用教程路由請求響應(yīng)的方法

    Django框架的使用教程路由請求響應(yīng)的方法

    這篇文章主要介紹了Django框架的使用教程路由請求響應(yīng)的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-07-07
  • Python 機(jī)器學(xué)習(xí)之線性回歸詳解分析

    Python 機(jī)器學(xué)習(xí)之線性回歸詳解分析

    回歸是監(jiān)督學(xué)習(xí)的一個(gè)重要問題,回歸用于預(yù)測輸入變量和輸出變量之間的關(guān)系,特別是當(dāng)輸入變量的值發(fā)生變化時(shí),輸出變量的值也隨之發(fā)生變化?;貧w模型正是表示從輸入變量到輸出變量之間映射的函數(shù)
    2021-11-11
  • 用Python編寫一個(gè)鼠標(biāo)自動(dòng)點(diǎn)擊程序詳細(xì)過程

    用Python編寫一個(gè)鼠標(biāo)自動(dòng)點(diǎn)擊程序詳細(xì)過程

    這篇文章主要給大家介紹了關(guān)于如何使用Python編寫一個(gè)鼠標(biāo)自動(dòng)點(diǎn)擊程序,通過使用pyautogui庫,可以實(shí)現(xiàn)模擬鼠標(biāo)點(diǎn)擊的功能,文章還介紹了如何使用time庫和threading庫來控制點(diǎn)擊間隔時(shí)間和實(shí)現(xiàn)多線程,需要的朋友可以參考下
    2024-11-11
  • python實(shí)現(xiàn)詞法分析器

    python實(shí)現(xiàn)詞法分析器

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)詞法分析器的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01

最新評論

潞城市| 安宁市| 日土县| 集贤县| 朝阳县| 通河县| 鸡东县| 高邮市| 温州市| 伊春市| 台东市| 江阴市| 孟村| 车险| 九寨沟县| 农安县| 佳木斯市| 保德县| 玉树县| 海兴县| 安顺市| 龙泉市| 改则县| 高要市| 隆回县| 七台河市| 贡山| 英超| 孝义市| 仁寿县| 莱州市| 绥中县| 郴州市| 西乌| 安庆市| 水城县| 科技| 安宁市| 合作市| 甘孜| 钟祥市|