zoukankan      html  css  js  c++  java
  • 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为求平均

  • 相关阅读:
    二分查找
    50道经典的JAVA编程题(46-50)
    50道经典的JAVA编程题(41-45)
    50道经典的JAVA编程题(36-40)
    50道经典的JAVA编程题(31-35)
    今天考试的JAVA编程题
    50道经典的JAVA编程题(26-30)
    50道经典的JAVA编程题(21-25)
    50道经典的JAVA编程题 (16-20)
    50道经典的JAVA编程题(目录)
  • 原文地址:https://www.cnblogs.com/jinchang/p/14353559.html
Copyright © 2011-2022 走看看