pytorch int32到int64的转换

2024-04-26 21:44:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将一个简单的图像掩码转换为int64

image = np.array([[1, 2], [3, 4]], dtype='int32')

transform = Compose([
    torch.from_numpy, 
    ConvertImageDtype(torch.int64)
])

然而,transform(image)产生

tensor([[ 4294967296,  8589934592],
        [12884901888, 17179869184]])

是否有什么问题,或者我根本误解了转换应该如何工作


Tags: composefrom图像imagenumpynptransformtorch
2条回答

从较小的整数转换为较大的整数dtype时,最大值没有准确映射。如果来回转换,此不匹配不会产生任何影响。[docs]

int32转换为int64

image = np.array([[1, 2], [3, 4]], dtype='int32')

transform = Compose([
    torch.from_numpy, 
    ConvertImageDtype(torch.int64)
])
image = transform(image)

image

tensor([[ 4294967296,  8589934592],
        [12884901888, 17179869184]])

int64转换为int32

transform = Compose([ 
    ConvertImageDtype(torch.int32)
])
transform(image)

image

tensor([[1, 2],
        [3, 4]], dtype=torch.int32)

如果跳过火炬的转换,图像将正确转换

image = np.array([[1, 2], [3, 4]], dtype='int64')

transform = Compose([
    torch.from_numpy
])
transform(image)
# tensor([[1, 2],
#        [3, 4]])

相关问题 更多 >