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


Python tf.distribute.experimental.coordinator.ClusterCoordinator.create_per_worker_dataset用法及代碼示例


用法

create_per_worker_dataset(
    dataset_fn
)

參數

  • dataset_fn 返回數據集的數據集函數。這將在工人身上執行。

返回

通過在工作設備上調用 dataset_fn 在工作人員上創建數據集。

這將創建由dataset_fn 在workers 上生成的給定數據集,並返回一個表示這些單獨數據集集合的對象。在這樣的數據集集合上調用 iter 會返回一個 tf.distribute.experimental.coordinator.PerWorkerValues ,它是迭代器的集合,其中迭代器已放置在相應的工作程序上。

不支持在迭代器的 PerWorkerValues 上調用 next。迭代器旨在作為參數傳遞給 tf.distribute.experimental.coordinator.ClusterCoordinator.schedule 。當調度的函數即將被一個worker執行時,該函數將接收到該worker對應的個體迭代器。當迭代器是函數的輸入時,可以在調度函數內的迭代器上調用 next 方法。

目前schedule 方法假設worker 都是相同的,因此假設不同worker 上的數據集是相同的,除非它們包含dataset.shuffle 操作並且未設置隨機種子時它們可能會被不同地洗牌。因此,我們還建議無限重複數據集並安排有限數量的步驟,而不是依賴數據集中的OutOfRangeError

例子:

strategy = tf.distribute.experimental.ParameterServerStrategy(
    cluster_resolver=...)
coordinator = tf.distribute.experimental.coordinator.ClusterCoordinator(
    strategy=strategy)

@tf.function
def worker_fn(iterator):
  return next(iterator)

def per_worker_dataset_fn():
  return strategy.distribute_datasets_from_function(
      lambda x:tf.data.Dataset.from_tensor_slices([3] * 3))

per_worker_dataset = coordinator.create_per_worker_dataset(
    per_worker_dataset_fn)
per_worker_iter = iter(per_worker_dataset)
remote_value = coordinator.schedule(worker_fn, args=(per_worker_iter,))
assert remote_value.fetch() == 3

相關用法


注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.distribute.experimental.coordinator.ClusterCoordinator.create_per_worker_dataset。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。