tensor的建立方法
文章目錄
- tensor的建立方法
-
- 總結
- 直接建立
-
- 使用`torch.tensor()`
- 從numpy建立tensor
- 依據數值建立張量
-
- **使用`torch.zeros()`**建立全零張量
- 使用`torch.zeros_like()`
- 建立全1張量
- 自定義數值建立張量
- 建立等差的1維張量
- 建立均分的1維張量
- 建立對數均分的1維張量
- 建立機關對角矩陣( 2維張量)
- 依據機率分布來建立張量
-
- 生成正态分布(高斯分布)
- 生成标準正态分布
- 在區間【0, 1)上,生成均勻分布
- 區間【low, high)生成整數均勻分布
- 生成生成從0到n-1的随機排列
- 以input為機率,生成伯努力分布 (0-1分布,兩點分布)
總結
直接建立
code | 作用 |
---|---|
torch.tensor() | 直接建立 |
torch.from_numpy(ndarray) | 從numpy建立tensor |
按值建立
code | 作用 |
---|---|
torch.tensor() | 直接建立 |
torch.from_numpy(ndarray) | 從numpy建立tensor |
torch.zeros()) | 建立全零張量 |
torch.ones() torch.ones_like() | 建立全1張量 |
torch.full() torch.full_like() | 建立全n張量(n為自定義) |
torch.arange() | 建立等差的1維張量 |
torch.linspace() | 建立均分的1維張量 |
torch.logspace() | 建立對數均分的1維張量 |
torch.eye() | 建立機關對角矩陣( 2維張量) |
按機率分布建立
code | 作用 |
---|---|
torch.normal() | 生成正态分布(高斯分布) |
torch.randn() torch.randn_like() | 生成标準正态分布 |
torch.rand() torch.rand_like() | 在區間【0, 1)上,生成均勻分布 |
torch.randint () torch.randint_like() | 區間【low, high)生成整數均勻分布 |
torch.randperm() | 生成生成從0到n-1的随機排列 |
torch.bernoulli() | 以input為機率,生成伯努力分布 (0-1分布,兩點分布) |
直接建立
使用 torch.tensor()
torch.tensor()
torch.tensor(data,dtype=None,device=None,requires_grad=False,pin_memory=False)
data | 資料, 可以是list, numpy |
---|---|
dtype | 資料類型,預設與data的一緻 |
device | 所在裝置, cuda/cpu |
requires_grad | 是否需要梯度 |
pin_memory | 是否存于鎖頁記憶體 |
- 需要把張量放在GPU上,可以設定
device = `cuda`
從numpy建立tensor
使用
torch.from_numpy(ndarray)
使用torch.from_numpy建立的tensor和原來ndarray共享記憶體
依據數值建立張量
**使用 torch.zeros()
**建立全零張量
torch.zeros()
torch.zeros(*size,
out=None,
dtype=None,
layout=torch.strided,
device=None,
requires_grad=False)
參數 | 作用 |
---|---|
size | 張量的形狀, 如(3, 3)、(3, 224,224) |
out | 輸出的張量 |
layout | 記憶體中布局形式, 有 strided,sparse_coo等 |
device | 所在裝置, gpu/cpu |
requires_grad | 是否需要梯度 |
-
out參數
輸入
out_t = torch.tensor([1])
t = torch.zeros((3,3), out=out_t)
列印結果
out_t與t是相同的
使用 torch.zeros_like()
torch.zeros_like()
依據input的形狀建立全0張量
torch.zeros_like(input,
dtype=None,
layout=None,
device=None,
requires_grad=False)
建立全1張量
使用
torch.ones()
使用
torch.ones_like()
torch.ones(*size,out=None,dtype=None,layout=torch.strided,device=None,requires_grad=False)
torch.ones_like(input,dtype=None,layout=None,device=None,requires_grad=False)
自定義數值建立張量
使用
torch.full()
使用
torch.full_like()
torch.full(size,
fill_value,
out=None,
dtype=None,
layout=torch.strided,
device=None,
requires_grad=False)
其中fill_value為張量的值
建立等差的1維張量
使用
torch.arange()
torch.arange(start=0,
end,
step=1,
out=None,
dtype=None,
layout=torch.strided,
device=None,
requires_grad=False)
- start : 數列起始值
- **end **: 數列“結束值”
- step: 數列公差,預設為1
建立均分的1維張量
使用
torch.linspace()
torch.arange(start=0,
end,
step=1,
out=None,
dtype=None,
layout=torch.strided,
device=None,
requires_grad=False)
- start : 數列起始值
- end : 數列結束值
- steps: 數列長度
建立對數均分的1維張量
使用
torch.logspace()
torch.logspace(start,
end,
steps=100,
base=10.0,
out=None,
dtype=None,
layout=torch.strided,
device=None,
requires_grad=False)
- start : 數列起始值
- end : 數列結束值
- steps: 數列長度
- base : 對數函數的底,預設為10
建立機關對角矩陣( 2維張量)
使用
torch.eye()
torch.eye(n,
m=None,
out=None,
dtype=None,
layout=torch.strided,
device=None,
requires_grad=False)
- n: 矩陣行數
- m : 矩陣列數
依據機率分布來建立張量
生成正态分布(高斯分布)
使用
torch.normal()
torch.normal(mean,
std,
out=None)
- mean : 均值(可為标量,也可為張量)
- std : 标準差(可為标量,也可為張量)
均值和标準差都是張量的時候需要給出size
torch.normal(mean,
std,
size,
out=None)
生成标準正态分布
使用
torch.randn()
使用
torch.randn_like()
torch.randn(*size,
out=None,
dtype=None,
layout=torch.strided,
device=None,
requires_grad=False)
- size : 張量的形狀
在區間【0, 1)上,生成均勻分布
使用
torch.rand()
使用
torch.rand_like()
區間【low, high)生成整數均勻分布
使用
torch.randint ()
使用
torch.randint_like()
生成生成從0到n-1的随機排列
使用
torch.randperm()
- n : 張量的長度
以input為機率,生成伯努力分布 (0-1分布,兩點分布)
使用
torch.bernoulli()
torch.bernoulli(input,
*,
generator=None,
out=None)
- input : 機率值