Spec-Zone.ru › TensorFlow 2.3

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.

Пример использования:

  1. Созданный из tf.distribute.DistributedDataset:
strategy = tf.distribute.MirroredStrategy()
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()
@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()
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()
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()
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=(2,), dtype=float32,
 numpy=array([5., 6.], dtype=float32)>,)

© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.3/api_docs/python/tf/distribute/DistributedValues

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API