Spec-Zone.ru › TensorFlow 2.3

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
)

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

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 (по умолчанию), используется regularizer по умолчанию, переданный в области видимости переменной (если и он None тоже, то по умолчанию регуляризация не выполняется).

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

Доступны некоторые полезные partitioner. См., например, 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). При включённом режиме 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 (например, для реализации ограничений нормы или значений для весов слоя). Функция должна принимать в качестве входных данных непроектированный тензор, представляющий значение переменной, и возвращать тензор для спроецированного значения (форма которого должна быть такой же). Ограничения не безопасны для использования при асинхронной распределённой подготовке.
synchronization Указывает, когда распределённая переменная будет агрегирована. Допустимые значения — константы, определённые в классе tf.VariableSynchronization. По умолчанию синхронизация установлена в AUTO и текущий DistributionStrategy выбирает, когда синхронизироваться.
aggregation Указывает, как распределённая переменная будет агрегирована. Допустимые значения — константы, определённые в классе tf.VariableAggregation.
Возвращает
Созданная или существующая Variable (или PartitionedVariable, если использовался partitioner).
Возможные исключения
ValueError при создании новой переменной и форме не объявлено, при нарушении повторного использования во время создания переменной или при несовпадении типа initializer и dtype. Повторное использование устанавливается внутри variable_scope.

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

Spec-Zone.ru

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