ToTensorImage¶
- class torchrl.envs.transforms.ToTensorImage(from_int: bool | None = None, unsqueeze: bool = False, dtype: torch.device | None = None, *, in_keys: Sequence[NestedKey] | None = None, out_keys: Sequence[NestedKey] | None = None, shape_tolerant: bool = False)[源代码]¶
将类似 numpy 的图像 (W x H x C) 转换为 PyTorch 图像 (C x W x H)。
将观察图像从 (… x W x H x C) 张量转换为 (… x C x W x H) 张量。可选地,将输入张量从 [0, 255] 范围缩放到 [0.0, 1.0] 范围(有关更多详细信息,请参阅
from_int
)。在其他情况下,张量不进行缩放直接返回。
- 参数:
from_int (bool, optional) – 如果为
True
,则张量将从 [0, 255] 范围缩放到 [0.0, 1.0] 范围。如果为 False`,则张量不会缩放。如果为 None,则如果张量不是浮点张量,它将被缩放。默认为 None。unsqueeze (bool) – 如果为
True
,则观察张量将沿第一个维度进行 unsqueeze。默认为 False。dtype (torch.dtype, optional) – 用于结果观察的 dtype。
- 关键字参数:
in_keys (list of NestedKeys) – 要处理的键。
out_keys (list of NestedKeys) – 要写入的键。
shape_tolerant (bool, optional) – 如果为
True
,则将检查输入图像的形状。如果最后一个通道不是 3,则会忽略排列。默认为False
。
示例
>>> transform = ToTensorImage(in_keys=["pixels"]) >>> ri = torch.randint(0, 255, (1 , 1, 10, 11, 3), dtype=torch.uint8) >>> td = TensorDict( ... {"pixels": ri}, ... [1, 1]) >>> _ = transform(td) >>> obs = td.get("pixels") >>> print(obs.shape, obs.dtype) torch.Size([1, 1, 3, 10, 11]) torch.float32
- transform_observation_spec(observation_spec: TensorSpec) TensorSpec [源代码]¶
转换观察规范,使结果规范与转换映射匹配。
- 参数:
observation_spec (TensorSpec) – 转换前的规范
- 返回:
转换后的预期规范