「masked_select 函数最关键的参数就是布尔掩码 mask,传入 mask 参数的布尔张量通过 True 和 False (或 1 和 0) 来决定输入张量对应位置的元素是否保留,既然是一一对应的关系,这就需要传入 mask 中的布尔张量和传入 input 中的输入张量形状要相同。」这里需要注意此时的形状相同包括显式的相等,还包括隐式的相等。
importtorchx=torch.randn([3,4])print(x)# 将x中的每一个元素与0.5进行比较# 当元素大于等于0.5返回True,否则返回Falsemask=x.ge(0.5)print(mask)print(torch.masked_select(x,mask))'''tensor([[ 1.2001, 1.2968, -0.6657, -0.6907],[-2.0099, 0.6249, -0.5382, 1.4458],[ 0.0684, 0.4118, ...
mask_select会将满足mask(掩码、遮罩等等,随便翻译)的指示,将满足条件的点选出来。 根据掩码张量mask中的二元值,取输入张量中的指定项( mask为一个 ByteTensor),将取值返回到一个新的1D张量, 张量mask须跟input张量有相同数量的元素数目,但形状或维度不需要相同 x = torch.randn(3, 4) x 1.2045 2.4084 0.4001...
Pytorchmask_select函数的⽤法详解 ⾮常简单的函数,但是官⽹的介绍令⼈(令我)迷惑,所以稍加解释。mask_select会将满⾜mask(掩码、遮罩等等,随便翻译)的指⽰,将满⾜条件的点选出来。根据掩码张量mask中的⼆元值,取输⼊张量中的指定项( mask为⼀个 ByteTensor),将取值返回到⼀个新的1D...
pytorch, masked_select masked_select需要数据和mask的size是一样的 example import torch data = torch.randn((51, 2)) mask = torch.empty(51).random_(2) mask = mask.unsqueeze(1).bool() print("select nums", mask.sum()) select = data.masked_select(mask.repeat(1,2)).view(-1, 2) ...
首先是masked_select函数,我们来看一个例子: 它要求mask和被mask的tensor的shape是一样的,然后从crossEntropy选出mask值为1的那些值。输出的维度会减1。 另外为了实现交叉熵这里使用了gather函数,这是一种比较底层的实现方法,更简便的方法应该使用CrossEntropyLoss或者NLLLoss,其中CrossEntropy等价与LogSoftmax+NLLLoss...
上面的代码有几个需要注意的地方。首先是masked_select函数,我们来看一个例子: 它要求mask和被mask的tensor的shape是一样的,然后从crossEntropy选出mask值为1的那些值。输出的维度会减1。 另外为了实现交叉熵这里使用了gather函数,这是一种比较底层的实现方法,更简便的方法应该使用CrossEntropyLoss或者NLLLoss,其中Cros...
pytorch中的select by mask #select by maskx = torch.randn(3,4)print(x)#tensor([[ 1.1132, 0.8882, -1.4683, 1.4100],#[-0.4903, -0.8422, 0.3576, 0.6806],#[-0.7180, -0.8218, -0.5010, -0.0607]])mask= x.ge(0.5)print(mask)#tensor([[1, 0, 1, 0],#[1, 0, 0, 0],#[0, 0, ...
View Code 二、利用数据索引回去Tensor torch.index_select(input, dim, index, out=None) input: 输入的Tensor dim : 索引的轴 index:索引的轴的索引 out: 目标Tensor View Code 结果为: View Code mask_select会将满足mask(掩码)的指示,将满足条件的点选出来。将取值返回到一个新的1D张量 ...
另一方面,那些填充的值是不应该参与损失的计算的,实际上我们只需要4+3+2+1=10个输出对应的损失,因此我们需要将根据填充的值得到的损失剔除,我们可以使用变量自带的masked_select函数,通过mask矩阵(与对应的张量具有相同数量的元素,但是维度不必完全一样的布尔矩阵),将这些值去除掉,然后求和,除以有效元素数(这里为10...