快捷方式

merge_tensordicts

class tensordict.merge_tensordicts(*tensordicts: T, callback_exist: Optional[Union[Callable[[Any], Any], Dict[NestedKey, Callable[[Any], Any]]]] = None)

将 tensordicts 合并在一起。

参数:

*tensordicts (TensorDict 序列等效类型) – 要合并的 tensordicts 列表。

关键字参数:

callback_exist (callableDict[str, callable], optional) – 当条目存在于所有 tensordicts 中时使用的可调用对象。如果条目存在于部分 tensordicts 中,而不是全部,或者未传递 callback_exist,则使用 update,并使用 tensordict 序列中的第一个非 None 值。如果传递了可调用对象的字典,它将包含传递给函数的 tensordicts 中一些嵌套键的关联可调用函数。

示例

>>> from tensordict import merge_tensordicts, TensorDict
>>> td0 = TensorDict({"a": {"b0": 0}, "c": {"d": {"e": 0}}, "common": 0})
>>> td1 = TensorDict({"a": {"b1": 1}, "f": {"g": {"h": 1}}, "common": 1})
>>> td2 = TensorDict({"a": {"b2": 2}, "f": {"g": {"h": 2}}, "common": 2})
>>> td = merge_tensordicts(td0, td1, td2, callback_exist=lambda *v: torch.stack(list(v)))
>>> print(td)
TensorDict(
    fields={
        a: TensorDict(
            fields={
                b0: Tensor(shape=torch.Size([]), device=cpu, dtype=torch.int64, is_shared=False),
                b1: Tensor(shape=torch.Size([]), device=cpu, dtype=torch.int64, is_shared=False),
                b2: Tensor(shape=torch.Size([]), device=cpu, dtype=torch.int64, is_shared=False)},
            batch_size=torch.Size([]),
            device=None,
            is_shared=False),
        c: TensorDict(
            fields={
                d: TensorDict(
                    fields={
                        e: Tensor(shape=torch.Size([]), device=cpu, dtype=torch.int64, is_shared=False)},
                    batch_size=torch.Size([]),
                    device=None,
                    is_shared=False)},
            batch_size=torch.Size([]),
            device=None,
            is_shared=False),
        common: Tensor(shape=torch.Size([3]), device=cpu, dtype=torch.int64, is_shared=False),
        f: TensorDict(
            fields={
                g: TensorDict(
                    fields={
                        h: Tensor(shape=torch.Size([]), device=cpu, dtype=torch.int64, is_shared=False)},
                    batch_size=torch.Size([]),
                    device=None,
                    is_shared=False)},
            batch_size=torch.Size([]),
            device=None,
            is_shared=False)},
    batch_size=torch.Size([]),
    device=None,
    is_shared=False)
>>> print(td["common"])
tensor([0, 1, 2])

文档

访问全面的 PyTorch 开发者文档

查看文档

教程

为初学者和高级开发者提供深入的教程

查看教程

资源

查找开发资源并让您的问题得到解答

查看资源