jos*_*hua 5 python list mask pytorch tensor
以下代码可以很好地屏蔽
mask = targets >= 0
targets = targets[mask]
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试用两个条件进行屏蔽时,它会给出错误RuntimeError: Boolean value of Tensor with more than one value is ambiguous
mask = (targets >= 0 and targets <= 5)
targets = targets[mask]
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?
您在使用括号时犯了一个错误。将每个条件括起来,以便 NumPy 将它们视为单独的数组。
targets = np.random.randint(0,10,(10,))
mask = (targets>=0) & (targets<=5) #<----------
print(mask)
targets[mask]
Run Code Online (Sandbox Code Playgroud)
[ True False True False False True True True False True]
array([4, 1, 3, 1, 5, 3])
Run Code Online (Sandbox Code Playgroud)
您可以使用多个掩码创建一些复杂的逻辑,然后直接用它们索引数组。示例 - XNOR 可以写为~(mask1 ^ mask2)