當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。