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

PyTorch是否支持bitcount操作或直接计算汉明距离?

PyTorch中高效计算汉明距离的方法

替代循环的位计数方案

PyTorch 1.10及以上版本提供了torch.bit_count()函数,能直接统计张量元素二进制表示中1的位数,完美替代你写的循环逻辑,效率远高于手动循环:

xorimg = torch.bitwise_xor(img1, img2)
hdist = torch.bit_count(xorimg)

这个函数是底层优化实现,避免了Python循环的开销,对任意维度的张量都适用。

直接计算汉明距离的封装

PyTorch目前没有内置的torch.hamming()函数,但可以基于位运算和位计数快速封装一个:

def hamming_distance(img1, img2):
    # 计算异或后统计1的位数,得到汉明距离
    return torch.bit_count(torch.bitwise_xor(img1, img2))

如果需要计算全局总汉明距离,只需在结果后调用.sum();如果要保留每个元素的汉明距离结果,直接返回即可。

低版本PyTorch兼容方案

如果你的PyTorch版本低于1.10,可以用以下等效方法(效率略低于原生函数,但比循环好):

xorimg = torch.bitwise_xor(img1, img2)
# 逐位统计后求和
hdist = (xorimg & (1 << torch.arange(bitlen, device=xorimg.device))).bool().sum(dim=-1)

这里通过生成位掩码,逐位提取后统计1的数量,避免了Python循环。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 17:33:10