pytorch 常用命令

创建tensor

1.torch.eye(n,m)

创建一个对角线为1,其他为0的2维tensor

eg: x = torch.eys(3)

2.torch.linspace(start,end,steps)

创建一个1维tensor,start为3,end为10,共5个数

eg: x = torch.linspace(3,10,steps=5)

3.torch.ones(*size)

 torch.zeros(*size)

返回一个全1的tensor,形状由size决定

eg: x = torch.ones(3,4)

4.torch.rand(*size)

返回从[0,1)均匀分布随机抽取的数,形状由size决定

eg: x = torch.rand(3,4)

5.torch.randn(*size)

返回从均值为0,方差为1的高斯分布中随机抽取的数,形状有size决定

eg: x = torch.randn(3,4)

6.torch.arange(start,end,step)

返回从start到end的tensor,步长为step

eg: x = torch.arange(3,10,2)

7.torch.from_numpy(ndarray)

把numpy类型数组转化为tensor

8.torch.Tensor(data) == FloatTensor()

创建一个FloatTensor

eg:x = torch.Tensor(1)

x:[0],这里的标量1传入的是维度

eg: x = torch.Tensor([1])

x:[1],这里传入的是tensor[1]

9.torch.tensor(data)

这里的data可以是tuple,list,ndarray,scalar,根据原始的数据类型生成LongTensor,FloatTensor,DoubleTensor

eg:x = torch.tensor(1)

x:1,这里的的类型是LongTensor

基本操作

1.torch.cat((x,y),dim=-1)

在指定维度进行拼接

2.torch.chunk(tensor, chunks, dim=0)

与cat相反,在指定维度进行分割

chunks:分割的数目

3.torch.gather(input, dim, index)

根据index在指定的维度进行聚合

eg: t = torch.Tensor([[1,2],[3,4]])

x = torch.gather(t, 1, torch.LongTensor([[0,0],[1,0]]))

x: [1,1],[4,3]

4.torch.index_select(input,dim,index)

根据index从指定维度选取向量

5.torch.masked_select(input,mask)

取mask矩阵中为True的值

6.torch.squeeze(input,dim)

压缩指定为1的维度

7.torch.transpose(input,dim0,dim1)

对于指定的两个维度进行交换

torch.permute(index)

可以根据指定index进行交换

torch.t()

进行转置

8.torch.expand()

把tensor每个维度扩充为指定维度

torch.repeat()

把tensor每个维度重复多少倍

采样

1.torch.normal(mean,std,*size)

返回一个指定维度的高斯分布

2.torch.bernoulli(input)

input为一个元素值为0到1的tensor,返回一个2项分布,有指定概率为1

3.tensor.uniform_(0,1)

返回一个0到1的均匀分布

序列化

保存一个对象到硬盘上

torch.save(model.state_dict(),"checkpoint.pkl")

加载model参数

model.load_state_dict(torch.load("checkpoint.pkl"))

数学运算

1.torch.clamp(input,min,max):把input夹紧到min-max区间

torch.ceil(); torch.abs(); torch.exp(); torch.floor(); torch.log(); torch.pow()

torch.fmod():求余数

2.torch.add(input,value):各个元素加value

torch.add(input,value,other): 各个元素为input + (value * other)

3.torch.div(input,value): 各个元素除value

torch.div(input,other): 对应的位置相除

4.torch.mul(input,other):各个元素相乘

torch.mm(m1,m2):矩阵乘

torch.bmm(t1,t2):batch个矩阵相乘

5.torch.cumprod(input,dim)

求指定维度的累计乘

torch.cumsum(input,dim)
求指定维度的累计和

6.torch.dist(input,other,p)

返回p范式的距离;p为2则是l2距离

比较操作

1.torch.eq(input,other):比较元素是否相等

2.torch.ge(input,other): 是否大于等于;torch.gt():大于

3.torch.le(input,other): 是否小于等于; torch.lt() 小于

3.torch.ne(input,other):不等于

4.torch.kthvalue(input,k,dim):返回dim维度第k个最小值(value,indices)

5.torch.topk(input,k,dim): 返回topk个(value,indices)

其他操作 

torch.diag(input,diagonal=0):返回以input为对角线的tensor

torch.trace(input): 返回tensor的迹

torch.tril(input,k=0):返回下三角;k = 1上元素多,k = -1时不包括对角线元素少

torch.triu(input,k):返回上三角

torch.bmm(input,other):一个batch的进行矩阵乘积

torch.dot(input,other):向量进行点乘

损失函数

1 torch.nn.L1Loss(size_average=True,reduce=True)

计算输入x与目标y之间距离的绝对值(曼哈顿距离)的平均值

reduce=True:表明返回的是一个值,否则是一个同纬度的向量

size_average=True:表明是否要除以元素个数求平均

2 torch.nn.MSELoss(size_average=True, reduce=True)

计算输入x和目标y之间的l2距离(欧式距离)的平均值

3 nn.CrossEntropyLoss = nn.LogSoftmax() + nn.NLLLoss()

计算输入x和目标y之间的交叉熵,也就是正确答案的负对数概率

4 nn.functional.kl_div(reduction="sum")

计算两个分布之间的差异

reduction:sum为求和,mean为求平均

原文地址:https://www.cnblogs.com/jinchang/p/14353559.html