You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyTorch中对批量3×3布尔张量执行按位或运算的最优方法

PyTorch中对(n,3,3)二进制张量做全局按位或的最优方法

针对你的需求,这里有两种简洁高效的实现方式,都是PyTorch原生优化的操作,速度拉满:

方法1:利用逻辑或等价性(推荐,最简洁)

因为你的张量元素只有0和1,按位或运算等价于判断每个位置是否存在至少一个1,直接用torch.any()在第0维(对应n个矩阵的维度)上做归约,再转成整数类型即可:

import torch

# 构造示例输入张量
input_tensor = torch.tensor([
    [[0,0,1], [0,0,0], [1,0,0]],
    [[1,0,0], [0,0,0], [1,0,1]],
    [[0,1,1], [0,1,0], [1,0,1]]
])

# 核心操作
result = input_tensor.any(dim=0).int()

方法2:直接按位或归约

用PyTorch专门的按位归约函数torch.bitwise_or.reduce(),直接对指定维度的所有矩阵依次执行按位或:

result = torch.bitwise_or.reduce(input_tensor, dim=0)

结果验证

两种方法都会得到你期望的输出:

tensor([[1, 1, 1],
        [0, 1, 0],
        [1, 0, 1]], dtype=torch.int32)

新手注意点

  • dim=0是指定要合并的维度(对应n个矩阵的那一层),如果你的张量维度顺序不同,需要调整这个参数;
  • 如果你的张量是float类型(比如元素是0.0/1.0),torch.any()会自动把非0值识别为True,转int后同样得到正确结果;
  • 两种方法的效率几乎无差别,都是PyTorch底层优化的操作,适合大规模n的场景。

内容的提问来源于stack exchange,提问作者aspyct

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 10:55:22