Spec-Zone.ru › TensorFlow

tf.compat.v1.get_variable

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

tf.compat.v1.get_variable(
    name,
    shape=None,
    dtype=None,
    initializer=None,
    regularizer=None,
    trainable=None,
    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 в основном совместим с выполнением в режиме 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 и его партиционеры. Дополнительную информацию см. в руководстве по миграции многопроцессорных CPU/GPU и руководствах по ParameterServerStrategy, на которые оно ссылается.

Описание

Используется в ноутбуках

Используется в руководстве Используется в учебных пособиях
  • Миграция контрольных точек моделей
  • Использование моделей TF1.x в рабочих процессах TF2
  • Линейная регрессия смешанных эффектов в {TF Probability, R, Stan}
  • Обучение нейронных структур на основе графов в TFX

Эта функция добавляет префикс к имени с текущим пространством имён переменных и выполняет проверки повторного использования. Подробное описание работы повторного использования см. в Руководстве по пространству имён переменных. Вот пример:

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, то по умолчанию никакая регуляризация не выполняется).

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

Доступны некоторые полезные partitioners. См., например, 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 и может использоваться для регуляризации.
trainable Если True, также добавить переменную в коллекцию графов GraphKeys.TRAINABLE_VARIABLES (см. tf.Variable).
collections Список ключей коллекций графов, в которые нужно добавить переменную. По умолчанию [GraphKeys.GLOBAL_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, если использовался partitioner).
Возможные исключения
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/api_docs/python/tf/compat/v1/get_variable

Spec-Zone.ru

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