1. pytorch基本知识总结

  • 一 . 基本操作函数

1. torch.empty():创建一个未被初始化的tensor,tendsor的大小是由size确定的,即返回形状为size的空tensor

torch.empty(*size, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False, pin_memory=False) → Tensor

size:定义tensor的shape

2. torch.rand(*sizes, out=None) → Tensor

均匀分布:返回一个张量,包含了从区间[0, 1)的均匀分布中抽取的一组随机数,张量的形状由参数sizes定义

torch.rand_like(input)返回一个跟input的tensor一样size的0-1随机数

3. torch.randn(*sizes, out=None) → Tensor标准正太分布

返回一个张量,包含了从标准正态分布(均值为0,方差为1,即高斯白噪声)中抽取的一组随机数。张量的形状由参数sizes定义。

4.torch.normal(means, std, out=None) → → Tensor

离散正太分布

5. 线性间距离

torch.linspace(start, end, steps=100, out=None) → Tensor

返回一个1维张量,包含在区间start和end上均匀间隔的step个点。

6. torch.nmuel()返回元素数目

7. torch.dim()

在 tensor 的指定维度操作就是对指定维度包含的元素进行操作,如果想要保持结果的维度不变,设置参数keepdim=True即可。

8. torch.full()

举例:In:torch.full([2, 3], 7)       Out: tensor([[7., 7., 7.],  [7., 7., 7.]])

9. torch.arange(start=0, end, step=1, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) → Tensor  不包含end

torch.range(start=0, end, step=1, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) → Tensor 包含end

10. linspace/logspace

 

#生成0到10的4个数构成的等差数列
a = torch.linspace(0,10,steps=4)

#生成10的0次方为起始值,10的-1次方为终止值的8个数构成的等比数列
c = torch.logspace(0,-1,steps=8)

 

11. ones/zeros/eye

12. randperm()

randperm功能是随机打乱一个数字序列。
语法格式:
y = torch.randperm(n)
y是把0到n-1这些数随机打乱得到的一个数字序列。

13. torch.all()判断每个位置的元素是否相同,判断是否有0的元素

14. torch.t()表示转置,高维转置用torch.transpose()函数

15. torch.max()最大值,torch.median()中间值

 

17. torch.prod(input) : 返回所有元素的乘积

 

索引与切片

1. torch.index_select(dim, indices)

  • dim为维度,indices是索引序号

  • 这里的indeces必须是tensor ,不能直接是一个list

2.  “...”表示任意多维度,根据实际shape来推断

3. torch.masked_select()

  • 求掩码位置原来的元素大小

  • 缺点:会把数据,默认打平(flatten)

4.  torch.take(src, torch.tensor([index]))

     打平后,按照index来取对应位置的元素

Tensor维度变换

1. torch.view()是改变tensor的形状,参数-1表示该位置尺寸的值由其他位置推导得出,改变形状后元素的总个数保持不变。

2. torch.reshape()按照已有的维度进行变形,元素的总个数不变

3. torch.unsqueeze()增加维度

    torch.squeeze()降低维度

torch.expand()传入负的参数表示什么意思????????????

 

二. 基本数学运算

  • 可以使用 + - * / 推荐

  • 也可以使用 torch.add, mul, sub, div

In[]: torch.all(torch.ByteTensor([1,1,1,1]))

Out[]: tensor(1, dtype=torch.uint8)

In[]: torch.all(torch.ByteTensor([1,1,1,0]))

Out[]: tensor(0, dtype=torch.uint8

a = torch.rand(3, 4)
b = torch.rand(4)
c = torch.all(torch.eq(a-b, torch.sub(a, b)))

print(c)->tersor(True)

1. matmul

*要求矩阵相同位置的元素相乘,torch.matmul()是按照矩阵相乘

torch.mm()(only for 2d)不推荐

torch.matmul()等价与@

tensor.pow()求次方, **表示求方, torch.sqrt()求解平方根, torch.log(), torch.exp()(对数e的次方)

torch.floor()小数往下取整,torch.ceil()小数往上取整,torch.trunc()把小数裁剪返回小数的整数部分,torch.frac()返回小数的小数部分

 

torch.clamp(),gradient clipping将输入input张量每个元素的夹紧到区间 [min,max][min,max],并返回结果到一个新张量。

torch.clamp(input, min, max, out=None) → Tensor

 

操作定义如下:

      | min, if x_i < min

y_i = | x_i, if min <= x_i <= max

      | max, if x_i > max

 

  • 三. 统计学属性statics

norm 泛数

mean sum

prod

max,min, argmin求最小值位置, argmax求最大值位置

kthvalue, topk

1. torch.norm()对输入的tensor求解范数

torch.norm(input, p, dim, out=None,keepdim=False) → Tensor

返回输入张量给定维dim 上每行的p 范数。

参数:

    input (Tensor) – 输入张量
    p (float) – 范数计算中的幂指数值
    dim (int) – 缩减的维度
    out (Tensor, optional) – 结果张量
    keepdim(bool)– 保持输出的维度  (此参数官方文档中未给出,但是很常用)

其中p,input,output,重点看dim和keepdim两个参数。

dim=0,返回结果等于列个数,dim=1返回结果等国等与行个数

 

2. dim/keepdim

3. torch.topk()

torch.topk(input, k, dim=None, largest=True, sorted=True, out=None) -> (Tensor, LongTensor)

当largest=True时,dim=0,返回列上最大的前k个值,并排序

当largest=True时,dim=1,返回行上最大的前k个值,并排序

说明: 沿指定dim维度返回输入张量input中k个最大值。如果不指定dim,则默认input的最后一维,如果largest为False,则返回最小的k个值。

参数:

    input(Tensor) ---- 输入张量
    k(int) ---- “top-k"中的k值
    dim(int,可选的) ---- 排序的维度
    largest(bool,可选的) ---- 布尔值,控制返回最大或最小值
    sorted(bool,可选的) ---- 布尔值,控制返回值是否排序
    out(tuple,可选的) ---- 可选输出张量

返回值: 返回一个元组(values, indices),其中indices是原始输入张量input中排序元素下标。如果设定布尔值sorted为True,将会确保返回的k个值被排序

4. torch.kthvalue(input, k, dim=None, out=None)

说明: 取输入张量input指定维度上第k个最小值。如果不指定dim。默认为最后一维。返回一个元组(value, indices), 其中indices是原始输入张量中沿dim维的第k个最小值下标。

参数:

    input(Tensor) ---- 要对比的张量
    k(int) ---- 第k个最小值
    dim(int, 可选的) ---- 沿着此维度进行排序
    out(tuple,可选的) ---- 输出元组

 

5. torch.eq(input, other, out=None)

说明: 比较元素是否相等,第二个参数可以是一个数,或者是第一个参数同类型形状的张量

参数:

    input(Tensor) ---- 待比较张量
    other(Tenosr or float) ---- 比较张量或者数
    out(Tensor,可选的) ---- 输出张量

返回值: 一个torch.ByteTensor张量,包含了每个位置的比较结果(相等为1,不等为0)

 

6. torch.equal(tensor1, tensor2, out=None)

说明: 如果两个张量有相同的形状和元素值,则返回true,否则False

参数:

    tensor1(Tenosr) ---- 比较张量1
    tensor2(Tensor) ---- 比较张量2
    out(Tensor,可选的) ---- 输出张量

7. torch.ge(input, other, out=None)

说明: 逐元素比较input和other,即是否input >= other。

参数:

    input(Tensor) ---- 待对比的张量
    other(Tensor or float) ---- 对比的张量或float值
    out(Tensor,可选的) ---- 输出张量

 

4. torch.gt(input, other, out=None)

说明: 逐元素比较input和other,即是否input > other

参数:

    input(Tensor) ---- 要对比的张量
    other(Tensor or float) ---- 要对比的张量或float值
    out(Tensor,可选的) ---- 输出张量

6. torch.le(input, other, out=None)

说明: 逐元素比较input和other,即是否input <= other.

参数:

    input(Tenosr) ---- 要对比的张量
    other(Tensor or float) ---- 对比的张量或float值
    out(Tensor,可选的) ---- 输出张量

7. torch.lt(input, other, out=None)

说明: 逐元素比较input和other,即是否input < other

参数:

    input(Tensor) ---- 要对比的张量
    other(Tensor or float) ---- 对比的张量或float值
    out(Tensor,可选的) ---- 输出张量

13. torch.ne(input, other, out=None)

说明: 逐元素比较input和other,即是否input 不等于 other。第二个参数可以为一个数或与第一个参数相同形状和类型的张量

参数:

    input(Tensor) ---- 待对比的张量
    other(Tensor or float) ---- 对比的张量或float值
    out(Tensor, 可选的) ---- 输出张量

** 返回值:** 一个torch.ByteTensor 张量,包含了每个位置的比较结果,如果tensor和other不相等为True,返回1.

 

14. torch.sort(input, dim=None, descending=False, out=None)

说明: 对输入张量input沿指定维度按升序排序,如果不给定dim,则默认为输入的最后一维。如果指定参数descending为True,则按降序排序。

参数:

    input(Tensor) ---- 要排序的张量
    dim(int,可选的) ---- 沿着此维度排序
    descending(bool,可选的) ---- 布尔值,控制升序排序
    out(tuple,可选的) ---- 输出张量

返回值: 为ByteTensor类型或与tensor相同类型,为元组(sorted_tensor,sorted_indices),sorted_indices为原始输入中的下标

 

四. tensor高级操作

torch.where(condition, x, y)->Tensor

Return a tensor of elements selected from either x, or y, depending on condition.有相同的形状和元素值,则返回true,否则Falis

torch.gather(input, dim, index, out=None)->Tensor

Gathers values along an axis specified by dim

返回的tensor的size与index的size一致。dim用于指明index的元素值代表的维数。这个函数可以用来很方便地提取方阵的对角元素。

 

五 . 梯度求解常用函数

1. torch.autograd.grad()

def grad(outputs, inputs, grad_outputs=None, retain_graph=None, create_graph=False, only_inputs=True, allow_unused=False)

举例: 输入x,输出是y,则求y关于x的导数(梯度)

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值