ToTensor

class paddle.vision.transforms. ToTensor ( data_format='CHW', keys=None ) [源代码]

PIL.Imagenumpy.ndarray 转换成 paddle.Tensor

将形状为 (H x W x C)的输入数据 PIL.Imagenumpy.ndarray 转换为 (C x H x W)。

若输入数据形状为(H x W), ToTensor 会将该数据的形状视为(H x W x 1)。并且输出 Tensor 的形状是(1 x H x W)。

如果想保持形状不变,可以将参数 data_format 设置为 'HWC'

同时,如果输入的 PIL.Imagemode(L, LA, P, I, F, RGB, YCbCr, RGBA, CMYK, 1) 其中一种,或者输入的 numpy.ndarray 数据类型是 'uint8',那么会将输入数据从(0-255)的范围缩放到 (0-1)的范围。其他的情况,则保持输入不变。

在其他情况下, Tensor 将不缩放直接返回。

参数

  • data_format (str,可选) - 返回 Tensor 的格式,必须为 'HWC' 或 'CHW'。默认值:'CHW'。

  • keys (list[str]|tuple[str],可选) - 与 BaseTransform 定义一致。默认值:None。

形状

  • img (PIL.Image|numpy.ndarray) - 输入的图像数据,数据格式为'HWC'。

  • output (np.ndarray) - 返回的 Tensor 数据,根据参数 data_format,Tensor 的格式必须为 'HWC' 或 'CHW'。

返回

计算 ToTensor 的可调用对象。

代码示例

>>> from PIL import Image
>>> import paddle
>>> import paddle.vision.transforms as T
>>> import paddle.vision.transforms.functional as F

>>> img_arr = ((paddle.rand((4, 5, 3)) * 255.).astype('uint8')).numpy()
>>> fake_img = Image.fromarray(img_arr)
>>> transform = T.ToTensor()
>>> tensor = transform(fake_img)
>>> print(tensor.shape)
[3, 4, 5]
>>> print(tensor.dtype)
paddle.float32