快捷方式

UnboundedContinuousTensorSpec

class torchrl.data.UnboundedContinuousTensorSpec(*args, **kwargs)[原始碼]

torchrl.data.Unbounded 的已棄用版本,具有連續空間。

assert_is_in(value: Tensor) None

斷言張量是否屬於該框,否則會引發例外。

參數:

value (torch.Tensor) – 要檢查的值。

clear_device_() T

所有葉節點規格(必須具有裝置)的無作業。

對於 Composite 規格,此方法將清除裝置。

clone() Unbounded

建立 TensorSpec 的副本。

contains(item: torch.Tensor | tensordict.base.TensorDictBase) bool

如果數值 val 可以由 TensorSpec 產生,則回傳 True,否則回傳 False

請參閱 is_in() 以取得更多資訊。

cpu()

將 TensorSpec 轉換為 ‘cpu’ 裝置。

cuda(device=None)

將 TensorSpec 轉換為 ‘cuda’ 裝置。

property device: device

spec 的裝置。

只有 Composite specs 可以有 None 裝置。所有 leaves 都必須有一個非 null 裝置。

encode(val: numpy.ndarray | torch.Tensor | tensordict.base.TensorDictBase, *, ignore_device: bool = False) torch.Tensor | tensordict.base.TensorDictBase

根據指定的 spec 編碼一個數值,並回傳對應的 tensor。

此方法用於回傳一個可以輕易映射到 TorchRL 所需網域的數值(例如,一個 numpy array)的環境中。如果該數值已經是一個 tensor,則 spec 不會變更其數值,並將其原封不動地回傳。

參數:

val (np.ndarraytorch.Tensor) – 要編碼為 tensor 的數值。

關鍵字引數:

ignore_device (bool, optional) – 如果 True,則 spec 裝置會被忽略。這用於將 tensor 轉換分組到一個呼叫 TensorDict(..., device="cuda") 中,這樣會更快。

回傳:

符合所需 tensor specs 的 torch.Tensor。

expand(*shape)

回傳一個具有擴展形狀的新 Spec。

參數:

*shape (tupleint 的 iterable) – Spec 的新形狀。必須可與目前形狀廣播:其長度必須至少與目前形狀長度一樣長,且其最後的值也必須相容;也就是說,只有在目前維度是 singleton 時,它們才能與之不同。

flatten(start_dim: int, end_dim: int) T

展平一個 TensorSpec

請參閱 flatten() 以取得有關此方法的更多資訊。

classmethod implements_for_spec(torch_function: Callable) Callable

為 TensorSpec 註冊一個 torch 函數覆寫。

abstract index(index: Union[int, Tensor, ndarray, slice, List], tensor_to_index: torch.Tensor | tensordict.base.TensorDictBase) torch.Tensor | tensordict.base.TensorDictBase

索引輸入張量。

參數:
  • index (int, torch.Tensor, slicelist) – 張量的索引

  • tensor_to_index – 要被索引的張量

回傳:

已索引的張量

is_in(val: Tensor) bool

如果數值 val 可以由 TensorSpec 產生,則回傳 True,否則回傳 False

更精確地說,is_in 方法檢查值 val 是否在 space 屬性(盒子)定義的範圍內,並且 dtypedeviceshape 以及潛在的其他元數據是否與 spec 的元數據匹配。如果任何一個檢查失敗,is_in 方法將返回 False

參數:

val (torch.Tensor) – 要檢查的值。

回傳:

布林值,指示值是否屬於 TensorSpec 盒子。

make_neg_dim(dim: int) T

將特定維度轉換為 -1

property ndim: int

spec 形狀的維度數量。

len(spec.shape) 的快捷方式。

ndimension() int

spec 形狀的維度數量。

len(spec.shape) 的快捷方式。

one(shape: Optional[Size] = None) torch.Tensor | tensordict.base.TensorDictBase

傳回盒子中填滿 1 的張量。

注意

即使不能保證 1 屬於 spec 域,此方法在違反此條件時也不會引發例外。 one 的主要使用案例是產生空的資料緩衝區,而不是有意義的資料。

參數:

shape (torch.Size) – 1-張量的形狀

回傳:

在 TensorSpec 盒子中採樣的填滿 1 的張量。

ones(shape: Optional[Size] = None) torch.Tensor | tensordict.base.TensorDictBase

代理到 one()

project(val: torch.Tensor | tensordict.base.TensorDictBase) torch.Tensor | tensordict.base.TensorDictBase

如果輸入張量不在 TensorSpec 盒子中,它會使用一些定義好的啟發式方法將其映射回盒子中。

參數:

val (torch.Tensor) – 要映射到盒子的張量。

回傳:

屬於 TensorSpec 盒子的 torch.Tensor。

rand(shape: Optional[Size] = None) Tensor

回傳一個在 spec 定義的空間中的隨機張量。

除非該範圍是無界的,在這種情況下將繪製常態值,否則將在空間上均勻地完成採樣。

參數:

shape (torch.Size) – 隨機張量的形狀

回傳:

在 TensorSpec 範圍中採樣的隨機張量。

reshape(*shape) T

重新塑形一個 TensorSpec

請參閱 reshape() 以取得有關此方法的更多資訊。

sample(shape: Optional[Size] = None) torch.Tensor | tensordict.base.TensorDictBase

回傳一個在 spec 定義的空間中的隨機張量。

請參閱 rand() 以取得詳細資訊。

squeeze(dim: Optional[int] = None) T

回傳一個新的 Spec,其中移除所有大小為 1 的維度。

當給定 dim 時,僅在該維度上執行 squeeze 運算。

參數:

dim (intNone) – 要對其應用 squeeze 運算的維度

to(dest: Union[dtype, device, str, int]) Unbounded

將 TensorSpec 轉換為裝置或 dtype。

如果沒有進行任何更改,則回傳相同的 spec。

to_numpy(val: torch.Tensor | tensordict.base.TensorDictBase, safe: Optional[bool] = None) numpy.ndarray | dict

回傳輸入張量的 np.ndarray 對應項。

這旨在作為 encode() 的反向運算。

參數:
  • val (torch.Tensor) – 要轉換為 numpy 的張量。

  • safe (bool) – 指示是否應根據 spec 的範圍對值執行檢查的布林值。 預設為 CHECK_SPEC_ENCODE 環境變數的值。

回傳:

一個 np.ndarray。

type_check(value: Tensor, key: Optional[NestedKey] = None) None

檢查輸入值 dtype 是否符合 TensorSpecdtype,如果不符合則拋出例外。

參數:
  • value (torch.Tensor) – 要檢查 dtype 的張量。

  • key (str, optional) – 如果 TensorSpec 有鍵,則 value 的 dtype 將根據指示鍵所指向的 spec 進行檢查。

unflatten(dim: int, sizes: Tuple[int]) T

TensorSpec 扁平化。

請查閱 unflatten() 以獲得有關此方法的更多資訊。

unsqueeze(dim: int) T

傳回一個新的 Spec,其中包含一個額外的單例維度(位於 dim 指示的位置)。

參數:

dim (int or None) – 要套用 unsqueeze 運算的維度。

view(*shape) T

重新塑形一個 TensorSpec

請參閱 reshape() 以取得有關此方法的更多資訊。

zero(shape: Optional[Size] = None) torch.Tensor | tensordict.base.TensorDictBase

在 box 中傳回一個填滿零的張量。

注意

即使無法保證 0 屬於 spec 網域,此方法也不會在違反此條件時拋出例外。 zero 的主要使用案例是產生空的資料緩衝區,而不是有意義的資料。

參數:

shape (torch.Size) – 零張量的形狀

回傳:

在 TensorSpec box 中取樣的填滿零的張量。

zeros(shape: Optional[Size] = None) torch.Tensor | tensordict.base.TensorDictBase

Proxy to zero().

文件

Access comprehensive developer documentation for PyTorch

View Docs

Tutorials

Get in-depth tutorials for beginners and advanced developers

View Tutorials

Resources

Find development resources and get your questions answered

View Resources