如何在PyTorch中仅对特定值使用torch.eq()实现元素级相等判断?
实现仅统计两个张量中数值为1且对应位置相等的元素数量
当然可以搞定这个需求!核心思路就是先筛选出两个张量对应位置同时为1的元素,再统计它们的数量,我给你两种实用的实现方式:
分步清晰版:先分别生成两个张量等于1的掩码,再取逻辑交集,最后求和
import torch # 示例张量(多维张量也适用) tensor_a = torch.tensor([[1, 0, 1], [0, 1, 0]]) tensor_b = torch.tensor([[1, 1, 1], [1, 1, 0]]) # 1. 生成各自等于1的掩码(布尔张量,True表示对应位置是1) mask_a = tensor_a == 1 mask_b = tensor_b == 1 # 2. 找出同时满足两个条件的位置(逻辑与操作) both_one_mask = mask_a & mask_b # 3. 统计数量:布尔张量中True等价于1,直接求和后转成Python数值 target_count = both_one_mask.sum().item() print(target_count) # 输出3,对应(0,0)、(0,2)、(1,1)这三个位置简洁一行版:把判断合并成一步
如果觉得分步写太啰嗦,可以把逻辑整合到一行里,效果完全一样:target_count = (torch.eq(tensor_a, tensor_b) & (tensor_a == 1)).sum().item()这里
torch.eq(tensor_a, tensor_b)先找出两个张量对应位置相等的元素,再和tensor_a == 1取交集,就精准定位到了「相等且值为1」的位置,最后求和统计数量。
额外提示:如果需要按特定维度统计(比如每行的符合条件元素数),可以给sum()加上dim参数,比如sum(dim=1)就会返回每行的统计结果。
内容的提问来源于stack exchange,提问作者Jimbo
相关产品推荐
相关产品推荐

