亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

PyTorch基本數據類型(一)

 更新時間:2019年05月22日 09:03:07   作者:Liam Coder  
這篇文章主要為大家詳細介紹了PyTorch基本數據類型,具有一定的參考價值,感興趣的小伙伴們可以參考一下

PyTorch基礎入門一:PyTorch基本數據類型

1)Tensor(張量)

Pytorch里面處理的最基本的操作對象就是Tensor(張量),它表示的其實就是一個多維矩陣,并有矩陣相關的運算操作。在使用上和numpy是對應的,它和numpy唯一的不同就是,pytorch可以在GPU上運行,而numpy不可以。所以,我們也可以使用Tensor來代替numpy的使用。當然,二者也可以相互轉換。

Tensor的基本數據類型有五種:

  • 32位浮點型:torch.FloatTensor。pyorch.Tensor()默認的就是這種類型。
  • 64位整型:torch.LongTensor。
  • 32位整型:torch.IntTensor。
  • 16位整型:torch.ShortTensor。
  • 64位浮點型:torch.DoubleTensor。

那么如何定義Tensor張量呢?其實定義的方式和numpy一樣,直接傳入相應的矩陣即可即可。下面就定義了一個三行兩列的矩陣:

import torch
# 導包
 
a = torch.Tensor([[1, 2], [3, 4], [5, 6]])
print(a)

不過在項目之中,更多的做法是以特殊值或者隨機值初始化一個矩陣,就像下面這樣:

import torch
 
# 定義一個3行2列的全為0的矩陣
b = torch.zeros((3, 2))
 
# 定義一個3行2列的隨機值矩陣
c = torch.randn((3, 2))
 
# 定義一個3行2列全為1的矩陣
d = torch.ones((3, 2))
 
print(b)
print(c)
print(d)

Tensor和numpy.ndarray之間還可以相互轉換,其方式如下:

  • Numpy轉化為Tensor:torch.from_numpy(numpy矩陣)
  • Tensor轉化為numpy:Tensor矩陣.numpy()

范例如下:

import torch
import numpy as np
 
# 定義一個3行2列的全為0的矩陣
b = torch.randn((3, 2))
 
# tensor轉化為numpy
numpy_b = b.numpy()
print(numpy_b)
 
# numpy轉化為tensor
numpy_e = np.array([[1, 2], [3, 4], [5, 6]])
torch_e = torch.from_numpy(numpy_e)
 
print(numpy_e)
print(torch_e)

之前說過,numpy與Tensor最大的區(qū)別就是在對GPU的支持上。Tensor只需要調用cuda()函數就可以將其轉化為能在GPU上運行的類型。

我們可以通過torch.cuda.is_available()函數來判斷當前的環(huán)境是否支持GPU,如果支持,則返回True。所以,為保險起見,在項目代碼中一般采取“先判斷,后使用”的策略來保證代碼的正常運行,其基本結構如下:

import torch
 
# 定義一個3行2列的全為0的矩陣
tmp = torch.randn((3, 2))
 
# 如果支持GPU,則定義為GPU類型
if torch.cuda.is_available():
  inputs = tmp.cuda()
# 否則,定義為一般的Tensor類型
else:
  inputs = tmp

2)Variable(變量)

Pytorch里面的Variable類型數據功能更加強大,相當于是在Tensor外層套了一個殼子,這個殼子賦予了前向傳播,反向傳播,自動求導等功能,在計算圖的構建中起的很重要的作用。Variable的結構圖如下:

其中最重要的兩個屬性是:data和grad。Data表示該變量保存的實際數據,通過該屬性可以訪問到它所保存的原始張量類型,而關于該 variable(變量)的梯度會被累計到.grad 上去。

在使用Variable的時候需要從torch.autograd中導入。下面通過一個例子來看一下它自動求導的過程:

import torch
from torch.autograd import Variable
 
# 定義三個Variable變量
x = Variable(torch.Tensor([1, 2, 3]), requires_grad=True)
w = Variable(torch.Tensor([2, 3, 4]), requires_grad=True)
b = Variable(torch.Tensor([3, 4, 5]), requires_grad=True)
 
# 構建計算圖,公式為:y = w * x^2 + b
y = w * x * x + b
 
# 自動求導,計算梯度
y.backward(torch.Tensor([1, 1, 1]))
 
print(x.grad)
print(w.grad)
print(b.grad)

上述代碼的計算圖為y = w * x^2 + b。對x, w, b分別求偏導為:x.grad = 2wx,w.grad=x^2,b.grad=1。代值檢驗可得計算結果是正確的。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 使用Python進行數獨求解詳解(一)

    使用Python進行數獨求解詳解(一)

    本文主要介紹了如何構建一個Python腳本來解決數獨難題,本文的重點在于介紹用于構建數獨求解器的回溯算法。感興趣的小伙伴可以學習一下
    2022-02-02
  • Python Socket傳輸文件示例

    Python Socket傳輸文件示例

    這篇文章主要介紹了Python Socket傳輸文件示例,發(fā)送端可以不停的發(fā)送新文件,接收端可以不停的接收新文件。有興趣的可以了解一下。
    2017-01-01
  • python如何為創(chuàng)建大量實例節(jié)省內存

    python如何為創(chuàng)建大量實例節(jié)省內存

    這篇文章主要為大家詳細介紹了python如何為創(chuàng)建大量實例節(jié)省內存,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • python 6行代碼制作月歷生成器

    python 6行代碼制作月歷生成器

    這篇文章主要介紹了python如何用6行代碼制作月歷生成器,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-09-09
  • 去除python中的字符串空格的簡單方法

    去除python中的字符串空格的簡單方法

    在本篇文章里小編給大家整理了一篇關于去除python中的字符串空格的簡單方法,有興趣的朋友們可以學習下。
    2020-12-12
  • Python爬蟲beautifulsoup4常用的解析方法總結

    Python爬蟲beautifulsoup4常用的解析方法總結

    今天小編就為大家分享一篇關于Python爬蟲beautifulsoup4常用的解析方法總結,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • python名片管理系統(tǒng)開發(fā)

    python名片管理系統(tǒng)開發(fā)

    這篇文章主要為大家詳細介紹了python名片管理系統(tǒng)開發(fā),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • python進程池Pool中apply方法與apply_async方法的區(qū)別

    python進程池Pool中apply方法與apply_async方法的區(qū)別

    這篇文章主要介紹了python進程池Pool中apply方法與apply_async方法的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • 如何使用Python基于接口編程的方法實現

    如何使用Python基于接口編程的方法實現

    本文主要介紹了如何使用Python基于接口編程,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Python面向對象特殊屬性及方法解析

    Python面向對象特殊屬性及方法解析

    這篇文章主要介紹了Python面向對象特殊屬性及方法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09

最新評論