PIL转numpy和PIL转tensor是不一样的
PIL to numpy and PIL to tensor is different
我有图像和 sum 火炬张量和 numpy 数组不同,为什么?
如何 torch_img.sum() = numpy_float_img.sum()?
from PIL import Image
from torchvision import transforms as T
# Read image with PIL
img = Image.open(img_path).resize((224,224))
torch_img = T.ToTensor()(img)
numpy_img = np.asarray(img)
numpy_img_float = np.asarray(img).astype(np.float32)
print(torch_img.sum(), numpy_img.sum(), numpy_img_float.sum())
->56914.496, 14513196, 14513196.0
有人知道为什么吗?
注意 torch_img
如何在 [0,1]
范围内,而 numpy_img
和 numpy_img_float
都在 [0, 255]
范围内。查看 torchvision.transforms.ToTensor
的文档,如果提供的输入是 PIL
图像,则值将映射到 [0, 1]
。相反,numpy.array
的值将保持在 [0, 255]
范围内。
除此之外,结果中的微小差异是由不同的浮点精度引起的。
我有图像和 sum 火炬张量和 numpy 数组不同,为什么? 如何 torch_img.sum() = numpy_float_img.sum()?
from PIL import Image
from torchvision import transforms as T
# Read image with PIL
img = Image.open(img_path).resize((224,224))
torch_img = T.ToTensor()(img)
numpy_img = np.asarray(img)
numpy_img_float = np.asarray(img).astype(np.float32)
print(torch_img.sum(), numpy_img.sum(), numpy_img_float.sum())
->56914.496, 14513196, 14513196.0
有人知道为什么吗?
注意 torch_img
如何在 [0,1]
范围内,而 numpy_img
和 numpy_img_float
都在 [0, 255]
范围内。查看 torchvision.transforms.ToTensor
的文档,如果提供的输入是 PIL
图像,则值将映射到 [0, 1]
。相反,numpy.array
的值将保持在 [0, 255]
范围内。
除此之外,结果中的微小差异是由不同的浮点精度引起的。