「masked_select 函数最关键的参数就是布尔掩码 mask,传入 mask 参数的布尔张量通过 True 和 False (或 1 和 0) 来决定输入张量对应位置的元素是否保留,既然是一一对应的关系,这就需要传入 mask 中的布尔张量和传入 input 中的输入张量形状要相同。」这里需要注意此时的形状相同包括显式的相等,还包括隐式的相等。
「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...
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(0/1, False/True 形式的mask)索引数据,返回1-D张量。 movedim 移动轴。如0,1轴交换:torch.movedim(t, 1, 0) . moveaxis 同movedim。Alias for torch.movedim().(这里发现pytorch很多地方会将dim和axis混用,概念都是一样的。) narrow 变窄的张量?从功能看还是索引。在指定轴上,...
索引操作——torch.index_select()、torch.mask_select() 变换操作——torch.reshape()、torch.transpose()、torch.t()、torch.squeeze()、torch.unsqueeze() 张量的数学运算 张量的数学运算和 ndarray 的数学运算类似。由于在深度学习中经常使用先乘后加的操作,要关注以下三个运算: ...
>>> torch.masked_select(x, mask) tensor([1.2252,0.5002,0.6248,2.0139]) 小知识点是这里使用了一个ge函数。该函数会逐元素比较array中的值和给定值的大小。然后返回布尔类型的tensor。总之要想用好masked_select,和各种能判断并生成布尔类型tensor的函数搭配起来才是正道。
import torch b = torch.tensor([[1,2],[2,8]]) mask = b.ge(2) #大于或者等于2 print(mask) # 输出 tensor([[False, True], # [ True, True]]) print(torch.masked_select(b,mask)) # 输出 tensor([2, 2, 8]) 1.9 找出张量中的非零数值的索引 import torch eye = torch.eye(3) #...
mask:与input同形状的布尔类型张量 torch.masked_select(input, mask, out=None) 1. 2. 3. 具体的代码示例如下: import numpy as np import torch flag = True # flag = False if flag: t = torch.randint(0, 9, size=(3, 3)) mask = t.ge(5) #ge的意思是大于等于,greater than or equal,同...