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 на соответствующий встроенный API TensorFlow v2. Инструкции по переносу остальной части кода см. в руководстве по переходу с TensorFlow v1 на TensorFlow v2.

Хотя это устаревший API compat.v1, tf.compat.v1.get_variable в основном совместим с eager execution и 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 необходимо отслеживать переменные (и аргументы regularizer) вручную или с помощью механизмов tf.Module либо tf.keras.layers.Layer.

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

Примечание: Аргумент partitioner несовместим с поведением TF2 даже при использовании tf.compat.v1.keras.utils.track_tf1_style_variables. Вместо него можно использовать ParameterServerStrategy и его разделители. Дополнительную информацию см. в руководстве по переходу на много-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 (значение по умолчанию), будет использоваться initializer по умолчанию, заданный в области видимости переменной. Если и он равен None, будет использован glorot_uniform_initializer. В качестве initializer также можно указать Tensor; в этом случае переменная инициализируется этим значением и формой.

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

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

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

Аргументы
name Имя новой или существующей переменной.
shape Форма новой или существующей переменной.
dtype Тип новой или существующей переменной (по умолчанию DT_FLOAT).
initializer Инициализатор переменной, если она создается. Это может быть объект инициализатора или Tensor. Если это Tensor, его форма должна быть известна, если только validate_shape не имеет значение False.
regularizer Функция вида (Tensor -> Tensor или None); результат ее применения к вновь созданной переменной будет добавлен в коллекцию tf.GraphKeys.REGULARIZATION_LOSSES и может использоваться для регуляризации.
trainable Если True, также добавить переменную в коллекцию графа GraphKeys.TRAINABLE_VARIABLES (см. tf.Variable).
collections Список ключей коллекций графа, в которые нужно добавить Variable. По умолчанию [GraphKeys.GLOBAL_VARIABLES] (см. tf.Variable).
caching_device Необязательная строка устройства или функция, определяющая, где следует кэшировать Variable для чтения. По умолчанию используется устройство Variable. Если значение не None, кэширование выполняется на другом устройстве. Обычно кэш размещают на устройстве, где находятся Ops, использующие Variable, чтобы избежать повторного копирования через Switch и другие условные операторы.
partitioner Необязательный вызываемый объект, принимающий полностью заданные TensorShape и dtype создаваемой Variable и возвращающий список разделов для каждой оси (в настоящее время разделять можно только по одной оси).
validate_shape Если значение False, переменную можно инициализировать значением с неизвестной формой. Если значение True (по умолчанию), форма initial_value должна быть известна. Для этого initializer должен быть Tensor, а не объектом инициализатора.
use_resource Если значение False, создается обычная Variable. Если значение True, вместо нее создается экспериментальная ResourceVariable с четко определенной семантикой. По умолчанию False (в дальнейшем значение изменится на True). При включенном eager execution для этого аргумента всегда принудительно задается значение 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 (например, для реализации ограничений на норму или значение весов слоя). Функция должна принимать на вход непроецированный Tensor, представляющий значение переменной, и возвращать Tensor со спроецированным значением (который должен иметь ту же форму). Ограничения небезопасно использовать при асинхронном распределенном обучении.
synchronization Определяет, когда будет выполняться агрегирование распределенной переменной. Допустимые значения — константы, определенные в классе tf.VariableSynchronization. По умолчанию для синхронизации задается значение AUTO, а текущий DistributionStrategy выбирает время синхронизации.
aggregation Определяет способ агрегирования распределенной переменной. Допустимые значения — константы, определенные в классе tf.VariableAggregation.
Возвращает
Созданную или существующую Variable (или PartitionedVariable, если использовался partitioner).
Вызывает исключения
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_variable

Spec-Zone.ru

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