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


Python tf.distribute.DistributedValues用法及代碼示例


表示分布值的基類。

用法

tf.distribute.DistributedValues(
    values
)

tf.distribute.DistributedValues 的子類實例在分配策略中創建變量、迭代 tf.distribute.DistributedDataset 或通過 tf.distribute.Strategy.run 時創建。這個基類永遠不應該被直接實例化。 tf.distribute.DistributedValues 包含每個副本的值。根據子類,這些值可以在更新時同步、按需同步或從不同步。

tf.distribute.DistributedValues 可以減少以獲得跨副本的單個值,作為輸入到 tf.distribute.Strategy.run 或使用 tf.distribute.Strategy.experimental_local_results 檢查的 per-replica 值。

示例用法:

  1. tf.distribute.DistributedDataset 創建:
strategy = tf.distribute.MirroredStrategy(["GPU:0", "GPU:1"])
dataset = tf.data.Dataset.from_tensor_slices([5., 6., 7., 8.]).batch(2)
dataset_iterator = iter(strategy.experimental_distribute_dataset(dataset))
distributed_values = next(dataset_iterator)
  1. run 返回:
strategy = tf.distribute.MirroredStrategy(["GPU:0", "GPU:1"])
@tf.function
def run():
  ctx = tf.distribute.get_replica_context()
  return ctx.replica_id_in_sync_group
distributed_values = strategy.run(run)
  1. 作為 run 的輸入:
strategy = tf.distribute.MirroredStrategy(["GPU:0", "GPU:1"])
dataset = tf.data.Dataset.from_tensor_slices([5., 6., 7., 8.]).batch(2)
dataset_iterator = iter(strategy.experimental_distribute_dataset(dataset))
distributed_values = next(dataset_iterator)
@tf.function
def run(input):
  return input + 1.0
updated_value = strategy.run(run, args=(distributed_values,))
  1. 降低價值:
strategy = tf.distribute.MirroredStrategy(["GPU:0", "GPU:1"])
dataset = tf.data.Dataset.from_tensor_slices([5., 6., 7., 8.]).batch(2)
dataset_iterator = iter(strategy.experimental_distribute_dataset(dataset))
distributed_values = next(dataset_iterator)
reduced_value = strategy.reduce(tf.distribute.ReduceOp.SUM,
                                distributed_values,
                                axis = 0)
  1. 檢查本地副本值:
strategy = tf.distribute.MirroredStrategy(["GPU:0", "GPU:1"])
dataset = tf.data.Dataset.from_tensor_slices([5., 6., 7., 8.]).batch(2)
dataset_iterator = iter(strategy.experimental_distribute_dataset(dataset))
per_replica_values = strategy.experimental_local_results(
   distributed_values)
per_replica_values
(<tf.Tensor:shape=(1,), dtype=float32, numpy=array([5.], dtype=float32)>,
 <tf.Tensor:shape=(1,), dtype=float32, numpy=array([6.], dtype=float32)>)

相關用法


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