快捷方式

IterKeyZipper

class torchdata.datapipes.iter.IterKeyZipper(source_datapipe: IterDataPipe, ref_datapipe: IterDataPipe, key_fn: Callable, ref_key_fn: Optional[Callable] = None, keep_key: bool = False, buffer_size: int = 10000, merge_fn: Optional[Callable] = None)

根据匹配的键(函数名称:zip_with_iter)将两个 IterDataPipes 压缩在一起。键分别由 key_fnref_key_fn 为两个 IterDataPipes 计算。当两个 IterDataPipes 的元素之间没有匹配时,来自 ref_datapipe 的元素将存储在缓冲区中。然后,将尝试来自 ref_datapipe 的下一个元素。找到匹配项后,merge_fn 将确定如何将它们组合在一起并返回(默认情况下将生成一个元组)。

参数::
  • source_datapipe – IterKeyZipper 将根据此 IterDataPipe 的顺序生成数据

  • ref_datapipe – 引用 IterDataPipe,IterKeyZipper 将从中查找与 source_datapipe 具有匹配键的项

  • key_fn – 可调用函数,用于使用来自 source_datapipe 的元素计算键

  • ref_key_fn – 可调用函数,用于使用来自 ref_datapipe 的元素计算键。如果未指定,key_fn 也将应用于来自 ref_datapipe 的元素

  • keep_key – 选项是在元组中与项一起生成匹配的键,从而产生 (key, merge_fn(item1, item2))

  • buffer_size – 用于保存来自引用 DataPipe 的键-数据对直到找到匹配项的缓冲区大小。如果将其指定为 None,则缓冲区大小将设置为无穷大。

  • merge_fn – 用于组合来自 source_datapipe 的项和来自 ref_datapipe 的项的函数,默认情况下将创建元组

示例

>>> from torchdata.datapipes.iter import IterableWrapper
>>> from operator import itemgetter
>>> def merge_fn(t1, t2):
>>>     return t1[1] + t2[1]
>>> dp1 = IterableWrapper([('a', 100), ('b', 200), ('c', 300)])
>>> dp2 = IterableWrapper([('a', 1), ('b', 2), ('c', 3), ('d', 4)])
>>> res_dp = dp1.zip_with_iter(dp2, key_fn=itemgetter(0),
>>>                            ref_key_fn=itemgetter(0), keep_key=True, merge_fn=merge_fn)
>>> list(res_dp)
[('a', 101), ('b', 202), ('c', 303)]

文档

访问 PyTorch 的综合开发者文档

查看文档

教程

获取针对初学者和高级开发人员的深入教程

查看教程

资源

查找开发资源并获得问题的解答

查看资源