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


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。