import torch
a=[1,2,3.]
type(a)
b=torch.tensor(a)
type(b)
b.dtype
import numpy as np
np.rand.normal
np.random.normal(2)
np.random.normal((2,3))
a=np.random.normal((2,3))
torch.tensor(a)
b=torch.tensor(a)
b
//构建全为1 的张量
c=torch.ones_like(b)
c
//构建全为0 的张量
c=torch.zeros_like(b)
c
//构建随机数组张量
c=torch.rand_like(b)
c
torch.rand((2,2))//元组
torch.rand([2,2])//列表
torch.rand([2,2]).dtype
a=torch.rand([2,2,])
a
a.dtype
a.shape
a.device
torch.is_tensor(a)
a=torch.tensor(1.0)
a
torch.is_nonzero(a)
a=torch.tensor(0)
torch.is_nonzero(a)
a=torch.rand([2,2,])
a
torch.numel(a)
a.shape
torch.Size([5,5])
torch.zero([5,5],dtype=torch.int32)//默认float
torch.ones_like(a)
torch.arange(5)//1,2,3,4,5
torch.range(start=0,end=5)//0.,1.,2.,3.,4.,5.
torch.eye(3)//对角线为1其余全为0 的三阶方阵
torch.full([2,2],5)//二阶全为5 的张量
torch.cat([a,b],dim=1)//在第一纬度列连接 0-1
c,d=torch.chunk(b,chunks=2)//把b分割成两个张量,按行分割
c,d=torch.chunk(b,chunks=2,dim=1)//把b分割成两个张量,按列分割
torch.reshape(b,[2,3])//把3行2列的张量变为2行3列的张量
torch.reshape(torch.reshape(b,[2,3]),[-1])//变成一维的张量
torch.reshape(torch.reshape(torch.reshape(b,[2,3]),[-1])[3,2])//还原
a=torch.arange(10).reshape(5,2)
a
torch.split(a,2)//每2行划分为一个块
torch.split(a,[1,4])//按列表纬度划分,第一块行数是1,第二块行数是4
//chunk只能均分
b.shape
b.reshape(b,[3,1,2])
torch.squeeze(b.reshape(b,[3,1,2]))//把1的维度移除
torch.reshape(b,[3,1,2,1,1])
torch.squeeze(torch.reshape(b,[3,1,2,1,1]),dim=1).shape//把第一个维度挤掉3,2,1,1
a[3*2] b[3*2]
torch.stack([a,b])
torch.stack([a,b]).shape//[2,3,2]
torch.stack([a,b],dim=1).shape//[3,2,2]
take//铺平成一维张量
tile/拷贝
x=torch.tensor([1,2,3])
x.tile(2)//[1,2,3,1,2,3]
y=torch([[1,2],[3,4]])
torch.tile(y,(2,2))//行复制2次,列复制两次
//[1,2,1,2]
[3,4,3,4]
[1,2,1,2]
[3,4,3,4]
transpose(a,0,1)//转置同transpose(a,1,0)
torch.unbind(a,dim=0)//按某个维度将张量拆分
a.shape//[2,3,4]
torch.unsqueeze(a,dim=0).shape//[1,2,3,4]
torch.unsqueeze(a,dim=1).shape//[2,1,3,4]
torch.unsqueeze(a,dim=-1).shape//[2,1,3,1]最后一个维度是1
a=torch.rand(2,2)
b=torch.zeros_like(a)
torch.where(a>0.5,a,b)//a中>0.5的元素保留到b,否则返回a的元素
torch.normal//正太分布
rand//[0,1)
randperm(n)//上界为n的0-(n-1)随机排列