关于torchvision.transforms.ToTensor(),官方解释是把一个取值范围是[0,255]的PIL.Image或者shape为(H,W,C)的numpy.ndarray,转换成形状为[C,H,W],取值范围是[0,1.0]的torch.FloadTensor,但是在使用过程中却发现只是将数据转化成了tensor,并没有映射到0~1
from torchvision import transforms
import numpy as np
data = np.random.randint(0, 255, size=300)
img = data.reshape(10,10,3)
print(img.shape)
img_tensor = transforms.ToTensor()(img) # 转换成tensor
print(img_tensor)
输出见下图所示
结果并未将数据映射到0~1,进行归一化处理
只有Ndarray是np.uint8 类型的时候,才会归一化
楼上正确的,需要转成np.uint8才会正确归一化,如果不是该数据类型,需要使用img/255.0归一化。
不然你就加一句data=data.astype(np.uint8),然后试试看下结果就知道了