Spec-Zone.ru › TensorFlow

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, чтобы узнать, как мигрировать остальную часть вашего кода.

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

Дополнительную информацию см. в руководстве по миграции моделей.

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

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

В разделе руководства по миграции содержатся дополнительные сведения об инкрементной миграции этих использований на tf.Variable.

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

Описание

Поведение такое же, как в get_variable, за исключением того, что переменные добавляются в коллекцию LOCAL_VARIABLES, и trainable устанавливается в False. Эта функция добавляет префикс к имени текущего пространства переменных и выполняет проверки повторного использования. Подробное описание работы повторного использования см. в разделе Как работать со scope переменных. Вот базовый пример:

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, будет использован инициализатор по умолчанию. Инициализатор также может быть тензором, в этом случае переменная будет инициализирована этим значением и формой.

Аналогично, если regularizer равен None (по умолчанию), будет использоваться regularizer по умолчанию, переданный в пространстве переменных (если он тоже равен 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 должна быть известна. Для этого инициализатор должен быть тензором, а не объектом инициализатора.
use_resource Если False, создаёт обычную переменную. Если True, создаёт экспериментальную переменную ResourceVariable вместо неё с чётко определённой семантикой. По умолчанию False (впоследствии будет изменено на True). При включённом режиме eager исполнения этот аргумент всегда принудительно устанавливается в True.
custom_getter Вызываемая функция, принимающая в качестве первого аргумента настоящий getter и позволяющая переопределять внутренний метод get_variable. Подпись custom_getter должна соответствовать подписи этого метода, но наиболее будущий вариант позволит изменять: def custom_getter(getter, *args, **kwargs). Также разрешён прямой доступ ко всем get_variable параметрам: def custom_getter(getter, name, *args, **kwargs). Простой пользовательский getter-идентификатор, который просто создаёт переменные с изменёнными именами:
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 и 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/api_docs/python/tf/compat/v1/get_local_variable

Spec-Zone.ru

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