Функция get_strategy
Функция get_strategy возвращает объект стратегии распределения,
активный в текущем контексте выполнения. Стратегия определяет,
как тензоры и операции размещаются по доступным устройствам
(например, нескольким GPU или TPU). Если явная стратегия
не была задана, функция возвращает стандартную стратегию
для одного устройства.
Синтаксис функции не требует обязательных параметров. В некоторых версиях TensorFlow допускается передача необязательного аргумента, но в большинстве случаев функция вызывается без аргументов.
Синтаксис
tf.distribute.get_strategy()
Пример
Давайте получим текущую стратегию распределения и выведем её тип:
import tensorflow as tf
strategy = tf.distribute.get_strategy()
print(type(strategy))
Результат выполнения кода:
<class 'tensorflow.python.distribute.distribute_lib._DefaultDistributionStrategy'>
Пример
Давайте создадим стратегию для одного устройства и проверим, что функция возвращает именно её:
import tensorflow as tf
strategy = tf.distribute.OneDeviceStrategy(device="/cpu:0")
with strategy.scope():
current = tf.distribute.get_strategy()
print(current is strategy)
Результат выполнения кода:
True
Пример
Давайте убедимся, что внутри области видимости стратегии функция возвращает ту же самую стратегию, а вне её - стандартную:
import tensorflow as tf
default_strategy = tf.distribute.get_strategy()
print("Before scope:", type(default_strategy).__name__)
strategy = tf.distribute.MirroredStrategy()
with strategy.scope():
inside = tf.distribute.get_strategy()
print("Inside scope:", type(inside).__name__)
print("Same object:", inside is strategy)
Результат выполнения кода:
Before scope: _DefaultDistributionStrategy
Inside scope: MirroredStrategy
Same object: True
Смотрите также
-
функцию
has_strategy,
которая проверяет наличие активной стратегии -
класс
OneDeviceStrategy,
который создает стратегию для одного устройства -
класс
MultiWorkerMirroredStrategy,
который создает стратегию для нескольких рабочих узлов -
функцию
get_replica_context,
которая возвращает контекст реплики