排序/前k大/前k小、finite/inf/nan判断、三角函数、统计函数、where、gather、index_select、masked_select、take、nonzero、cat、stack

一、函数

1. 排序/取前k大/取前k小

注意第二和第三函数的区别,前者为k个,后者为第k个
在这里插入图片描述

2. 判定是否为finite/inf/nan

在这里插入图片描述

3. 三角函数

在这里插入图片描述

4. Tensor中统计学相关的函数

在这里插入图片描述
在这里插入图片描述

5. tensor裁剪运算

裁剪运算可以用于对元素的范围约束梯度裁剪(gradient clipping)

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

返回范围内的一个tensor。可以使用 clamp 函数将不断增加、减小或随机变化的数值限制在一个范围内,结果的范围在[min, max]之间

  • 如果参数位于最小数值和最大数值之间的数值范围内,则该函数将返回该参数值
  • 如果参数大于范围,该函数将返回最大数值
  • 如果参数小于范围,该函数将返回最小数值

二、索引和数据筛选

1. where

torch.where(condition, x, y) → Tensor

根据条件,返回从x,y选择元素组成的张量。如果满足条件,则返回x中元素;若不满足,返回y中元素

②gather

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

沿着张量的某个dim方向,按照index规定选取指定元素,将与index同shape的矩阵填满,其输出形状与index相同

在这里插入图片描述

③index_select

torch.index_select(input, dim, index, out=None)→ Tensor

沿着张量的某个dim方向,按照index规定的选取指定的行或列,再将其拼接成一个张量

④masked_select

torch.masked_select(input, mask, out=None)→ Tensor

返回一个根据布尔掩码 (boolean mask) 索引输入张量的 1D 张量

masked_select 函数最关键的参数就是布尔掩码 mask,传入 mask 参数的布尔张量通过 True 和 False (或 1 和 0) 来决定输入张量对应位置的元素是否保留,既然是一一对应的关系,这就需要传入 mask 中的布尔张量和传入 input 中的输入张量形状要相同。这里需要注意此时的形状相同包括显式的相等,还包括隐式的相等

  • 显式相等非常好理解,input.size() = mask.size()
  • 隐式相等其实就是 PyTorch 中的广播机制,换句话说,传入 mask 参数的布尔张量和传入 input 参数的输入张量的形状可以不相等,但是这两个张量必须能够通过 PyTorch 中的广播机制广播成相同形状的张量
⑤take

torch.take(input, index)->Tensor

输入张量视为视为一维张量,返回一个新的张量,其中的元素是输入元素在给定的索引处对应的值。结果tensor的形状与索引相同。

⑥nonzero

torch.nonzero(input, out = None)→ Tensor

返回的是不为零的值在其对应维度中的索引

三、张量组合与拼接

1. cat

torch.cat(inputs, dim=0) → Tensor

指定维度上对输入的张量进行连接操作,注意inputs输入如下

print(torch.cat((a, b), 0))

2. stack

torch.stack(inputs, dim=0) → Tensor

简单来说就是把多个2维的张量凑成一个3维的张量;多个3维的凑成一个4维的张量…以此类推,也就是在增加新的维度进行堆叠

要注意的是输入的inputs是一个序列,且序列内部的张量元素shape相同
对于维度 0, 1, 2应该从外往里面看进去。在指定的维度对tensor进行叠加时,应该把该维度对应的个体看成是一个块,然后进行块的叠加

详细点击

其他

参考链接

  • https://blog.csdn.net/baidu_38797690/article/details/122180655?spm=1001.2101.3001.6650.7&depth_1-utm_relevant_index=10

本文只用于个人学习与记录,侵权立删

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值