日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

PyTorch 笔记(02)— 常用创建 Tensor 方法(torch.Tensor、ones、zeros、eye、arange、linspace、rand、randn、new)

發(fā)布時間:2023/11/27 生活经验 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PyTorch 笔记(02)— 常用创建 Tensor 方法(torch.Tensor、ones、zeros、eye、arange、linspace、rand、randn、new) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1. Tensor 概念分類

PyTorch 中的張量(Tensor)類似 NumPy 中的 ndarrays,之所以稱之為 Tensor 的另一個原因是它可以運行在 GPU 中,以加速運算。

1.1 從接口的角度分類

Tensor 的操作可分為以下兩類:

  1. torch.function,如 torch.save 等;
  2. tensor.function,如 tensor.view 等;

為方便使用,Tensor 的大部分操作同時支持這兩種接口,比如 torch.sum(a, b)a.sum(b) 功能是等價的。

1.2 從存儲的角度分類

Tensor 的操作又可分為以下兩類:

  1. 不會修改自身的數(shù)據(jù),如 a.add(b),加法結(jié)果會返回一個新的 tensor
  2. 會修改自身的數(shù)據(jù),如 a.add_(b),加法結(jié)果仍儲存在 a 中,但是 a 已經(jīng)被修改了;

注意:函數(shù)名以 _ 結(jié)尾的都是 inplace 方式,即會修改調(diào)用者自己的數(shù)據(jù)。

2. Tensor 創(chuàng)建方法

PyTorch 中的 Tensor 也有自己的數(shù)據(jù)類型定義方式,常用的如下。

2.1 torch.Tensor

需要注意的是,使用 torch.Tensor(*sizes) 創(chuàng)建 Tensor 時,系統(tǒng)不會立即分配空間,只會計算當前內(nèi)容空間是否夠用,使用到 Tensor 時才會分配,而其它操作都會在創(chuàng)建完成后立即進行空間分配。

用于創(chuàng)建一個 Tensor ,即可接受 list 作為參數(shù),也可以接受指定形狀作為參數(shù),還能傳入其它的 tensor

  • Tensor 接受形狀參數(shù),創(chuàng)建一個 2*3 的 Tensor
In [1]: import torch as t                                                                                                                                            In [2]: a = t.Tensor(2,3)                                                                                                                                            In [3]: a                                                                                                                                                            
Out[3]: 
tensor([[2.6380e+23, 1.3070e-14, 4.4721e+21],[6.8233e+22, 3.0217e+32, 4.6161e+24]])In [4]: a.type()                                                                                                                                                     
Out[4]: 'torch.FloatTensor'
  • 將列表轉(zhuǎn)換為 Tensor
In [5]: b = t.Tensor([[1,2], [3,4]])                                                                                                                                 In [6]: b                                                                                                                                                            
Out[6]: 
tensor([[1., 2.],[3., 4.]])In [7]: b.type()                                                                                                                                                     
Out[7]: 'torch.FloatTensor'
  • Tensor 轉(zhuǎn)換為 list
In [5]: b = t.Tensor([[1,2], [3,4]])                                                                                                                                 In [6]: b                                                                                                                                                            
Out[6]: 
tensor([[1., 2.],[3., 4.]])In [7]: b.type()                                                                                                                                                     
Out[7]: 'torch.FloatTensor'In [8]: b.tolist()                                                                                                                                                   
Out[8]: [[1.0, 2.0], [3.0, 4.0]]In [9]: type(b.tolist())                                                                                                                                             
Out[9]: list
  • 創(chuàng)建一個元素為 2 和 3 的 Tensor
In [10]: c = t.Tensor((2,3))                                                                                                                                         In [11]: c                                                                       
Out[11]: tensor([2., 3.])In [12]: c.type()                                                                     
Out[12]: 'torch.FloatTensor'

2.2 torch.ones

用于生成數(shù)據(jù)類型為浮點型且維度指定的 Tensor,不過這個浮點型的 Tensor中的元素值全部為 1,dtype 參數(shù)可以指定其數(shù)據(jù)類型。

In [1]: import torch as  t                                                                                                                                            In [2]: t.ones(2,3)                                                                                                                                                  
Out[2]: 
tensor([[1., 1., 1.],[1., 1., 1.]])In [3]: t.ones(2,3, dtype=t.int)                                                                                                                                     
Out[3]: 
tensor([[1, 1, 1],[1, 1, 1]], dtype=torch.int32)In [4]:   

2.3 torch.zeros

用于生成數(shù)據(jù)類型為浮點型且維度指定的 Tensor,不過這個浮點型的 Tensor中的元素值全部為 0,dtype 參數(shù)可以指定其數(shù)據(jù)類型。

import torcha = torch.zeros(2, 3, dtype=torch.int8)
print a

輸出結(jié)果:

tensor([[0, 0, 0],[0, 0, 0]], dtype=torch.int8)

2.4 torch.eye

用于生成數(shù)據(jù)類型為浮點型且維度指定的 Tensor,不過這個浮點型的 Tensor中對角線元素均為 1 ,dtype 參數(shù)可以指定其數(shù)據(jù)類型。

In [5]: t.eye(3,3)                                                                                                                                                   
Out[5]: 
tensor([[1., 0., 0.],[0., 1., 0.],[0., 0., 1.]])In [6]:  

2.5 torch.arange

用于生成數(shù)據(jù)類型為浮點型且自定義起始范圍和結(jié)束范圍的 Tensor,所以傳遞給 torch.linspace 的參數(shù)有三個,分別是范圍的起始值、范圍的結(jié)束值和步長,其中,步長用于指定從起始值到結(jié)束值的每步的數(shù)據(jù)間隔。

import torcha = torch.arange(1, 10, 2)

輸出結(jié)果:

tensor([1, 3, 5, 7, 9])

2.6 torch.linspace

用于生成數(shù)據(jù)類型為長整型且自定義起始范圍和結(jié)束范圍的 Tensor,所以傳遞給 torch.arange 的參數(shù)有三個,分別是范圍的起始值、范圍的結(jié)束值和均勻分成的份數(shù),其中,份數(shù)用于將起始值和結(jié)束值劃分為幾份。

In [7]: t.linspace(1, 10, 5)                                                                                                                                         
Out[7]: tensor([ 1.0000,  3.2500,  5.5000,  7.7500, 10.0000])In [8]: t.linspace(1, 11, 5)                                                                                                                                         
Out[8]: tensor([ 1.0000,  3.5000,  6.0000,  8.5000, 11.0000])In [9]:  

2.7 torch.rand

用于生成數(shù)據(jù)類型為浮點型且維度指定的隨機 Tensor,和在 NumPy 中使用 numpy.rand 生成隨機數(shù)的方法類似,隨機生成的浮點數(shù)據(jù)在 0~1 區(qū)間均勻分布。

import torcha = torch.rand(2, 3)

輸出結(jié)果:

tensor([[0.6882, 0.4118, 0.2646],[0.0583, 0.2187, 0.8093]])

2.8 torch.randn

用于生成數(shù)據(jù)類型為浮點型且維度指定的隨機 Tensor,和在 NumPy 中使用 numpy.randn 生成隨機數(shù)的方法類似,隨機生成的浮點數(shù)的取值滿足均值為 0、方差為 1 的正態(tài)分布。

import torcha = torch.randn(2, 3)

輸出結(jié)果:

tensor([[ 0.2214, -0.0139, -0.0720],[ 0.2548, -1.3364,  0.3924]])

2.9 torch.new

Tensor 還有一個 new 方法,用法與 t.Tensor 一樣, 會調(diào)用該 Tensor 對應類型的構(gòu)造函數(shù),生成與當前 tensor 類型一致的 tensor

In [126]: a = t.Tensor(2,3)                                                                                                                                          In [127]: a                                                                                                                                                          
Out[127]: 
tensor([[ 1.8829e+26,  4.5702e-41, -2.4199e-18],[-1.1804e+24,  2.3408e+26,  4.5702e-41]])In [128]: a.new(2,3)                                                                                                                                                 
Out[128]: 
tensor([[-7.1914e+16,  4.5702e-41,  3.3177e+05],[ 0.0000e+00,  2.3408e+26,  4.5702e-41]])In [129]: a.new(3,4)                                                                                                                                                 
Out[129]: 
tensor([[-7.1914e+16,  4.5702e-41,  3.4704e+05,  0.0000e+00],[-7.1913e+16,  4.5702e-41, -7.1913e+16,  4.5702e-41],[-7.6770e+16,  4.5702e-41, -7.6770e+16,  4.5702e-41]])In [130]: a.new(3,4).type()                                                                                                                                          
Out[130]: 'torch.FloatTensor'In [131]:   

總結(jié)

以上是生活随笔為你收集整理的PyTorch 笔记(02)— 常用创建 Tensor 方法(torch.Tensor、ones、zeros、eye、arange、linspace、rand、randn、new)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。