当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python PyTorch IterKeyZipper用法及代码示例


本文简要介绍python语言中 torchdata.datapipes.iter.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)

参数

  • 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 中的 key-data 对的缓冲区大小,直到找到匹配项为止。如果指定为None,则缓冲区大小设置为无限。

  • merge_fn-source_datapipe 中的项目和 ref_datapipe 中的项目组合在一起的函数,默认情况下会创建一个元组

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

示例

>>> 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.org大神的英文原创作品 torchdata.datapipes.iter.IterKeyZipper。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。