Spec-Zone.ru › TensorFlow 2.9

tf.compat.v1.get_local_variable

Получение существующей локальной переменной или создание новой.

tf.compat.v1.get_local_variable(
    name,
    shape=None,
    dtype=None,
    initializer=None,
    regularizer=None,
    trainable=False,
    collections=None,
    caching_device=None,
    partitioner=None,
    validate_shape=True,
    use_resource=None,
    custom_getter=None,
    constraint=None,
    synchronization=tf.VariableSynchronization.AUTO,
    aggregation=tf.compat.v1.VariableAggregation.NONE
)

Переход к TF2

Предупреждение: Этот API был разработан для TensorFlow v1. Продолжайте чтение, чтобы узнать, как перейти от этого API к эквиваленту в родном TensorFlow v2. Обратитесь к руководству по миграции TensorFlow v1 в TensorFlow v2 https://www.tensorflow.org/guide/migrate для получения инструкций по миграции остальной части кода.

Хотя это устаревший compat.v1 API, tf.compat.v1.get_variable в основном совместим с немедленным выполнением и tf.function, но только если вы используете его в сочетании с декоратором tf.compat.v1.keras.utils.track_tf1_style_variables. (Хотя он будет вести себя так, как будто reuse всегда установлен на AUTO_REUSE.)

Дополнительную информацию см. в руководстве по миграции модели https://www.tensorflow.org/guide/migrate/model_mapping.

Если вы не используете его с tf.compat.v1.keras.utils.track_tf1_style_variables, get_variable каждый раз будет создавать совершенно новую переменную и никогда не будет повторно использовать переменные, независимо от имен переменных или reuse аргументов.

Эквивалент этого символа в TF2 — tf.Variable, но обратите внимание, что при использовании tf.Variable вы должны убедиться, что отслеживаете свои переменные (и аргументы регуляризации) либо вручную, либо с помощью механизмов tf.Module или tf.keras.layers.Layer.

В руководстве по миграции https://www.tensorflow.org/guide/migrate/model_mapping#incremental_migration_to_native_tf2 приводятся дополнительные сведения о поэтапной миграции этих случаев использования на tf.Variable.

Примечание: Аргумент partitioner несовместим с поведением TF2, даже если используется tf.compat.v1.keras.utils.track_tf1_style_variables. Его можно заменить использованием ParameterServerStrategy и его разделителей. Дополнительную информацию см. в руководстве по миграции многопроцессорных CPU/GPU https://www.tensorflow.org/guide/migrate/multi_worker_cpu_gpu_training и руководствах ParameterServerStrategy, на которые оно ссылается.

Описание

Поведение аналогично get_variable, за исключением того, что переменные добавляются в коллекцию LOCAL_VARIABLES, а trainable устанавливается в False. Эта функция добавляет префикс к имени с текущим областью переменной и выполняет проверки повторного использования. Подробное описание работы повторного использования см. в разделе «Как работать с областями переменных» https://tensorflow.org/guide/variables. Вот пример основного использования:

def foo():
  with tf.variable_scope("foo", reuse=tf.AUTO_REUSE):
    v = tf.get_variable("v", [1])
  return v

v1 = foo()  # Creates v.
v2 = foo()  # Gets the same, existing v.
assert v1 == v2

Если initializer — None (по умолчанию), используется инициализатор по умолчанию, переданный в области переменных. Если он также None, используется glorot_uniform_initializer. Инициализатор также может быть тензором, в этом случае переменная инициализируется этим значением и формой.

Аналогично, если regularizer — None (по умолчанию), используется регуляризатор по умолчанию, переданный в области переменных (если он тоже None , то по умолчанию регуляризация не выполняется).

Если указан разделитель, возвращается PartitionedVariable. Обращение к этому объекту как к Tensor возвращает фрагменты, соединённые вдоль оси разбиения.

Доступны некоторые полезные разделители. См., например, variable_axis_size_partitioner и min_max_variable_partitioner.

Аргументы
name Имя новой или существующей переменной.
shape Форма новой или существующей переменной.
dtype Тип новой или существующей переменной (по умолчанию — DT_FLOAT).
initializer Инициализатор для переменной, если она создаётся. Может быть объектом инициализатора или тензором. Если это тензор, его форма должна быть известна, если validate_shape не False.
regularizer Функция (Tensor -> Tensor или None); результат её применения к только что созданной переменной добавляется в коллекцию tf.GraphKeys.REGULARIZATION_LOSSES и может использоваться для регуляризации.
collections Список ключей коллекций графа, в которые нужно добавить переменную. По умолчанию [GraphKeys.LOCAL_VARIABLES] (см. tf.Variable).
caching_device Необязательная строка устройства или функция, описывающая, где переменная должна быть кэширована для чтения. По умолчанию — устройство переменной. Если не None, кэшируется на другом устройстве. Типичное использование — кэширование на устройстве, где находятся операции, использующие переменную, для уменьшения копирования через Switch и другие условные операторы.
partitioner Необязательная вызываемая функция, которая принимает полностью определённую TensorShape и dtype создаваемой переменной и возвращает список разбиений для каждой оси (в настоящее время может быть разделена только одна ось).
validate_shape Если False, позволяет инициализировать переменную значением неизвестной формы. Если True (по умолчанию), форма initial_value должна быть известна. Для этого initializer должен быть тензором, а не объектом инициализатора.
use_resource Если False, создаётся обычная переменная. Если True, создаётся экспериментальная ResourceVariable вместо неё со своими свойствами. По умолчанию False (в дальнейшем будет изменено на True). При включённом немедленном выполнении этот аргумент всегда принудительно устанавливается в True.
custom_getter Вызываемая функция, которая принимает в качестве первого аргумента истинного получателя и позволяет переопределять внутренний метод get_variable. Подпись custom_getter должна совпадать с подписью этого метода, но самая надёжная версия позволит внести изменения: def custom_getter(getter, *args, **kwargs). Также разрешен прямой доступ ко всем параметрам get_variable: def custom_getter(getter, name, *args, **kwargs). Простая пользовательская функция получателя тождества, которая просто создаёт переменные с изменёнными именами:
def custom_getter(getter, name, *args, **kwargs):
  return getter(name + '_suffix', *args, **kwargs)
constraint Необязательная проекционная функция, которая применяется к переменной после обновления её Optimizer (например, используется для реализации ограничений норм или значений для весов слоя). Функция должна принимать на вход непроектированный тензор, представляющий значение переменной, и возвращать тензор для спроецированного значения (форма которого должна быть такой же). Ограничения небезопасны при асинхронной распределённой тренировке.
synchronization Указывает, когда распределённая переменная будет агрегирована. Допустимые значения — константы, определённые в классе tf.VariableSynchronization. По умолчанию синхронизация установлена в AUTO , и текущий DistributionStrategy выбирает, когда синхронизироваться.
aggregation Указывает, как распределённая переменная будет агрегирована. Допустимые значения — константы, определённые в классе tf.VariableAggregation.
Возвращаемое значение
Созданная или существующая Variable (или PartitionedVariable, если использовался разделитель).
Исключения
ValueError при создании новой переменной, если форма не объявлена, при нарушении повторного использования во время создания переменной или когда initializer тип и dtype не совпадают. Повторное использование устанавливается внутри variable_scope.

© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.9/api_docs/python/tf/compat/v1/get_local_variable

Spec-Zone.ru

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