Spec-Zone.ru › TensorFlow

tf.compat.v1.Variable

См. руководство по переменным.

Наследует: Variable

tf.compat.v1.Variable(
    initial_value=None,
    trainable=None,
    collections=None,
    validate_shape=True,
    caching_device=None,
    name=None,
    variable_def=None,
    dtype=None,
    expected_shape=None,
    import_scope=None,
    constraint=None,
    use_resource=None,
    synchronization=tf.VariableSynchronization.AUTO,
    aggregation=tf.compat.v1.VariableAggregation.NONE,
    shape=None
)

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

Используется в учебных материалах
  • Обучение модели смеси процессов Дирихле с использованием предварительно обусловленной стохастической динамики Ланжевена с градиентом

Переменная сохраняет состояние в графе между вызовами run(). Добавить переменную в граф можно, создав экземпляр класса Variable.

Конструктору Variable() требуется начальное значение переменной, которым может быть Tensor любого типа и формы. Начальное значение определяет тип и форму переменной. После создания тип и форма переменной фиксируются. Значение можно изменить с помощью одного из методов assign.

Чтобы позднее изменить форму переменной, необходимо использовать операцию assign с validate_shape=False.

Как и любой Tensor, переменные, созданные с помощью Variable(), можно использовать в качестве входных данных для других Ops в графе. Кроме того, все перегруженные операторы класса Tensor доступны и для переменных, поэтому добавлять узлы в граф можно также, просто выполняя арифметические операции над переменными.

import tensorflow as tf

# Create a variable.
w = tf.Variable(<initial-value>, name=<optional-name>)

# Use the variable in the graph like any Tensor.
y = tf.matmul(w, ...another variable or tensor...)

# The overloaded operators are available too.
z = tf.sigmoid(w + y)

# Assign a new value to the variable with `assign()` or a related method.
w.assign(w + 1.0)
w.assign_add(1.0)

После запуска графа переменные необходимо явно инициализировать, прежде чем выполнять Ops, использующие их значения. Инициализировать переменную можно, выполнив ее операцию-инициализатор, восстановив переменную из файла сохранения или просто выполнив операцию assign, которая присваивает переменной значение. Фактически операция-инициализатор переменной — это просто операция assign, которая присваивает переменной ее начальное значение.

# Launch the graph in a session.
with tf.compat.v1.Session() as sess:
    # Run the variable initializer.
    sess.run(w.initializer)
    # ...you now can run ops that use the value of 'w'...

Чаще всего для инициализации используют вспомогательную функцию global_variables_initializer(), которая добавляет в граф операцию инициализации всех переменных. Затем эту операцию выполняют после запуска графа.

# Add an Op to initialize global variables.
init_op = tf.compat.v1.global_variables_initializer()

# Launch the graph in a session.
with tf.compat.v1.Session() as sess:
    # Run the Op that initializes global variables.
    sess.run(init_op)
    # ...you can now run any Op that uses variable values...

Если необходимо создать переменную с начальным значением, зависящим от другой переменной, используйте initialized_value() этой переменной. Это гарантирует правильный порядок инициализации переменных.

Все переменные автоматически собираются в графе, в котором они созданы. По умолчанию конструктор добавляет новую переменную в коллекцию графа GraphKeys.GLOBAL_VARIABLES. Вспомогательная функция global_variables() возвращает содержимое этой коллекции.

При создании модели машинного обучения часто удобно различать переменные, хранящие обучаемые параметры модели, и другие переменные, например переменную global step для подсчета шагов обучения. Для этого в конструкторе переменной предусмотрен параметр trainable=<bool>. Если True, новая переменная также добавляется в коллекцию графа GraphKeys.TRAINABLE_VARIABLES. Вспомогательная функция trainable_variables() возвращает содержимое этой коллекции. Различные классы Optimizer используют эту коллекцию как список переменных для оптимизации по умолчанию.

Предупреждение: По умолчанию объекты tf.Variable имеют неинтуитивную модель памяти. Внутри Variable представлена как изменяемый Tensor, который может недетерминированно ссылаться на другие Tensor в графе. Набор операций, использующих Variable и способных привести к совместному использованию памяти, не определен и может меняться в разных версиях TensorFlow. Не пишите код, который полагается на то, что значение Variable будет или не будет изменяться при выполнении других операций. Например, использовать объекты Variable или простые функции от них в качестве предикатов в tf.cond опасно и чревато ошибками:
v = tf.Variable(True)
tf.cond(v, lambda: v.assign(False), my_false_fn)  # Note: this is broken.

В этом случае добавление use_resource=True при создании переменной устраняет проблемы недетерминированности:

v = tf.Variable(True, use_resource=True)
tf.cond(v, lambda: v.assign(False), my_false_fn)

Чтобы использовать замену переменных, лишенную этих проблем:

  • Добавьте use_resource=True при создании tf.Variable;
  • Вызовите tf.compat.v1.get_variable_scope().set_use_resource(True) внутри tf.compat.v1.variable_scope перед вызовом tf.compat.v1.get_variable().
Аргументы
initial_value Tensor или объект Python, преобразуемый в Tensor, который задает начальное значение Variable. Для начального значения должна быть указана форма, если только для validate_shape не задано значение False. Также это может быть функция без аргументов, возвращающая начальное значение при вызове. В этом случае необходимо указать dtype. (Обратите внимание: перед использованием здесь функции-инициализаторы из init_ops.py необходимо связать с формой.)
trainable Если True, переменная также добавляется в коллекцию графа GraphKeys.TRAINABLE_VARIABLES. Эта коллекция используется классами Optimizer в качестве списка переменных по умолчанию. По умолчанию используется True, если только для synchronization не задано значение ON_READ; в этом случае по умолчанию используется False.
collections Список ключей коллекций графа. Новая переменная добавляется в эти коллекции. По умолчанию используется [GraphKeys.GLOBAL_VARIABLES].
validate_shape Если False, переменную можно инициализировать значением с неизвестной формой. Если True (значение по умолчанию), форма initial_value должна быть известна.
caching_device Необязательная строка устройства, описывающая, где следует кэшировать Variable для чтения. По умолчанию используется устройство Variable. Если значение не None, кэширование выполняется на другом устройстве. Обычно кэш размещают на устройстве, где находятся Ops, использующие Variable, чтобы избежать повторного копирования через Switch и другие условные операторы.
name Необязательное имя переменной. По умолчанию используется 'Variable'; уникальность имени обеспечивается автоматически.
variable_def Протокол-буфер VariableDef. Если значение не None, объект Variable создается заново с его содержимым и ссылками на узлы переменной в графе, которые уже должны существовать. Граф не изменяется. variable_def и другие аргументы нельзя использовать одновременно.
dtype Если задано, initial_value преобразуется к указанному типу. Если задано None, тип данных сохраняется (если initial_value — это Tensor) либо определяется с помощью convert_to_tensor.
expected_shape TensorShape. Если задано, ожидается, что initial_value будет иметь эту форму.
import_scope Необязательный string. Область имен, добавляемая к Variable.. Используется только при инициализации из протокол-буфера.
constraint Необязательная функция проекции, применяемая к переменной после ее обновления с помощью Optimizer (например, для реализации ограничений нормы или значения весов слоя). Функция должна принимать на вход непроецированный Tensor, представляющий значение переменной, и возвращать Tensor с проецированным значением (той же формы). Ограничения небезопасно использовать при асинхронном распределенном обучении.
use_resource Определяет, следует ли использовать переменные ресурсов.
synchronization Указывает, когда будет выполняться агрегирование распределенной переменной. Допустимые значения — константы, определенные в классе tf.VariableSynchronization. По умолчанию для синхронизации установлено значение AUTO, а момент синхронизации выбирает текущий DistributionStrategy.
aggregation Указывает, как будет выполняться агрегирование распределенной переменной. Допустимые значения — константы, определенные в классе tf.VariableAggregation.
shape (необязательно) Форма этой переменной. Если None, используется форма initial_value. Если для этого аргумента задано значение tf.TensorShape(None) (обозначающее неопределенную форму), переменной можно присваивать значения с разными формами.
Вызывает исключения
ValueError Если заданы и variable_def, и initial_value.
ValueError Если начальное значение не указано или не имеет формы, а validate_shape равно True.
RuntimeError Если включен режим eager execution.
Атрибуты
aggregation
constraint Возвращает функцию-ограничение, связанную с этой переменной.
device Устройство этой переменной.
dtype DType этой переменной.
graph Graph этой переменной.
initial_value Возвращает Tensor, используемый в качестве начального значения переменной.

Обратите внимание: он отличается от initialized_value(), который выполняет операцию инициализации переменной перед возвратом ее значения. Этот метод возвращает тензор, используемый операцией инициализации переменной.

initializer Операция инициализации этой переменной.
name Имя этой переменной.
op Operation этой переменной.
shape TensorShape этой переменной.
synchronization
trainable

Дочерние классы

class SaveSliceInfo

Методы

assign

Посмотреть исходный код

assign(
    value, use_locking=False, name=None, read_value=True
)

Присваивает переменной новое значение.

По существу, это сокращенная запись для assign(self, value).

Аргументы
value Tensor. Новое значение этой переменной.
use_locking Если True, при присваивании используется блокировка.
name Имя создаваемой операции
read_value Если True, возвращает объект, вычисление которого дает новое значение переменной; если False, возвращает операцию assign.
Возвращает
Обновленная переменная. Если read_value равно false, вместо этого возвращает None в режиме Eager и операцию assign в режиме графа.

assign_add

Посмотреть исходный код

assign_add(
    delta, use_locking=False, name=None, read_value=True
)

Прибавляет значение к этой переменной.

По существу, это сокращенная запись для assign_add(self, delta).

Аргументы
delta Tensor. Значение, которое нужно прибавить к этой переменной.
use_locking Если True, при выполнении операции используется блокировка.
name Имя создаваемой операции
read_value Если True, возвращает объект, вычисление которого дает новое значение переменной; если False, возвращает операцию assign.
Возвращает
Обновленная переменная. Если read_value равно false, вместо этого возвращает None в режиме Eager и операцию assign в режиме графа.

assign_sub

Посмотреть исходный код

assign_sub(
    delta, use_locking=False, name=None, read_value=True
)

Вычитает значение из этой переменной.

По существу, это сокращенная запись для assign_sub(self, delta).

Аргументы
delta Tensor. Значение, которое нужно вычесть из этой переменной.
use_locking Если True, при выполнении операции используется блокировка.
name Имя создаваемой операции
read_value Если True, возвращает объект, вычисление которого дает новое значение переменной; если False, возвращает операцию assign.
Возвращает
Обновленная переменная. Если read_value равно false, вместо этого возвращает None в режиме Eager и операцию assign в режиме графа.

batch_scatter_update

Посмотреть исходный код

batch_scatter_update(
    sparse_delta, use_locking=False, name=None
)

Пакетно присваивает этой переменной значения tf.IndexedSlices.

Аналогично batch_gather. Предполагается, что эта переменная и разреженный IndexedSlices sparse_delta имеют последовательность начальных измерений, совпадающих у всех них, а обновления выполняются по последнему измерению indices. Иными словами, измерения должны иметь следующий вид:

num_prefix_dims = sparse_delta.indices.ndims - 1 batch_dim = num_prefix_dims + 1 sparse_delta.updates.shape = sparse_delta.indices.shape + var.shape[ batch_dim:]

где

sparse_delta.updates.shape[:num_prefix_dims] == sparse_delta.indices.shape[:num_prefix_dims] == var.shape[:num_prefix_dims]

Выполняемую операцию можно выразить следующим образом:

var[i_1, ..., i_n, sparse_delta.indices[i_1, ..., i_n, j]] = sparse_delta.updates[ i_1, ..., i_n, j]

Если sparse_delta.indices — это одномерный тензор, данная операция эквивалентна scatter_update.

Чтобы избежать этой операции, можно выполнить цикл по первому ndims переменной и использовать scatter_update для подтензоров, полученных разбиением по первому измерению. Это допустимый вариант для ndims = 1, но он менее эффективен, чем данная реализация.

Аргументы
sparse_delta tf.IndexedSlices, присваиваемые этой переменной.
use_locking Если True, при выполнении операции используется блокировка.
name имя операции.
Возвращает
Обновленная переменная.
Вызывает исключения
TypeError если sparse_delta не является IndexedSlices.

count_up_to

Посмотреть исходный код

count_up_to(
    limit
)

Увеличивает значение этой переменной, пока оно не достигнет limit. (Устарело.)

Устарело: ЭТА ФУНКЦИЯ УСТАРЕЛА. Она будет удалена в будущей версии. Рекомендации по обновлению: используйте Dataset.range.

При выполнении этой операции предпринимается попытка увеличить переменную на 1. Если в результате значение переменной превысит limit, операция вызовет исключение OutOfRangeError.

Если ошибка не возникает, операция выводит значение переменной до увеличения.

По существу, это сокращенная запись для count_up_to(self, limit).

Аргументы
limit Значение, при достижении которого увеличение переменной вызывает ошибку.
Возвращает
Tensor, содержащий значение переменной до увеличения. Если никакая другая операция не изменяет эту переменную, все полученные значения будут различными.

eval

Посмотреть исходный код

eval(
    session=None
)

В сеансе вычисляет и возвращает значение этой переменной.

Этот метод не создает граф: он не добавляет в него Ops.

Для этого вспомогательного метода необходим сеанс, в котором запущен граф с этой переменной. Если сеанс не передан, используется сеанс по умолчанию. Подробнее о запуске графа и сеансах см. в разделе tf.compat.v1.Session.

v = tf.Variable([1, 2])
init = tf.compat.v1.global_variables_initializer()

with tf.compat.v1.Session() as sess:
    sess.run(init)
    # Usage passing the session explicitly.
    print(v.eval(sess))
    # Usage with the default session.  The 'with' block
    # above makes 'sess' the default session.
    print(v.eval())
Аргументы
session Сеанс, используемый для вычисления этой переменной. Если он не указан, используется сеанс по умолчанию.
Возвращает
Объект numpy ndarray с копией значения этой переменной.

experimental_ref

Посмотреть исходный код

experimental_ref()

УСТАРЕВШАЯ ФУНКЦИЯ

Устарело: ЭТА ФУНКЦИЯ УСТАРЕЛА. Она будет удалена в будущей версии. Рекомендации по обновлению: используйте ref().

from_proto

Посмотреть исходный код

@staticmethod
from_proto(
    variable_def, import_scope=None
)

Возвращает объект Variable, созданный из variable_def.

gather_nd

Посмотреть исходный код

gather_nd(
    indices, name=None
)

Извлекает срезы из params в Tensor с формой, заданной параметром indices.

Подробности см. в tf.gather_nd.

Аргументы
indices Tensor. Должен иметь один из следующих типов: int32, int64. Тензор индексов.
name Имя операции (необязательно).
Возвращает
Tensor. Имеет тот же тип, что и params.

get_shape

Посмотреть исходный код

get_shape() -> tf.TensorShape

Псевдоним Variable.shape.

initialized_value

Посмотреть исходный код

initialized_value()

Возвращает значение инициализированной переменной. (Устарело.)

Устарело: ЭТА ФУНКЦИЯ УСТАРЕЛА. Она будет удалена в будущей версии. Рекомендации по обновлению: используйте Variable.read_value. В версии 2.X переменные инициализируются автоматически как в eager-режиме, так и в режиме графа (внутри tf.defun).

Используйте этот метод вместо самой переменной для инициализации другой переменной значением, зависящим от значения этой переменной.

# Initialize 'v' with a random tensor.
v = tf.Variable(tf.random.truncated_normal([10, 40]))
# Use `initialized_value` to guarantee that `v` has been
# initialized before its value is used to initialize `w`.
# The random values are picked only once.
w = tf.Variable(v.initialized_value() * 2.0)
Возвращает
Tensor, содержащий значение этой переменной после выполнения ее инициализатора.

load

Посмотреть исходный код

load(
    value, session=None
)

Загружает новое значение в эту переменную. (Устарело.)

Устарело: ЭТА ФУНКЦИЯ УСТАРЕЛА. Она будет удалена в будущей версии. Рекомендации по обновлению: предпочтительно использовать Variable.assign, который в версии 2.X имеет аналогичное поведение.

Записывает новое значение в память переменной. Не добавляет Ops в граф.

Для этого вспомогательного метода необходим сеанс, в котором запущен граф с этой переменной. Если сеанс не передан, используется сеанс по умолчанию. Подробнее о запуске графа и сеансах см. в разделе tf.compat.v1.Session.

v = tf.Variable([1, 2])
init = tf.compat.v1.global_variables_initializer()

with tf.compat.v1.Session() as sess:
    sess.run(init)
    # Usage passing the session explicitly.
    v.load([2, 3], sess)
    print(v.eval(sess)) # prints [2 3]
    # Usage with the default session.  The 'with' block
    # above makes 'sess' the default session.
    v.load([3, 4], sess)
    print(v.eval()) # prints [3 4]
Аргументы
value Новое значение переменной
session Сеанс, используемый для вычисления этой переменной. Если он не указан, используется сеанс по умолчанию.
Вызывает исключения
ValueError Сеанс не передан, и сеанс по умолчанию отсутствует

read_value

Посмотреть исходный код

read_value()

Возвращает значение этой переменной, прочитанное в текущем контексте.

Оно может отличаться от value(), например, если переменная находится на другом устройстве или имеет управляющие зависимости.

Возвращает
Tensor, содержащий значение переменной.

ref

Посмотреть исходный код

ref()

Возвращает хешируемый объект-ссылку на эту Variable.

Основное назначение этого API — помещать переменные в множество или словарь. Переменные нельзя помещать в множество или словарь, поскольку variable.__hash__() больше недоступен начиная с TensorFlow 2.0.

Следующий код будет вызывать исключение начиная с версии 2.0

x = tf.Variable(5)
y = tf.Variable(10)
z = tf.Variable(10)
variable_set = {x, y, z}
Traceback (most recent call last):

TypeError: Variable is unhashable. Instead, use tensor.ref() as the key.
variable_dict = {x: 'five', y: 'ten'}
Traceback (most recent call last):

TypeError: Variable is unhashable. Instead, use tensor.ref() as the key.

Вместо этого можно использовать variable.ref().

variable_set = {x.ref(), y.ref(), z.ref()}
x.ref() in variable_set
True
variable_dict = {x.ref(): 'five', y.ref(): 'ten', z.ref(): 'ten'}
variable_dict[y.ref()]
'ten'

Кроме того, объект-ссылка предоставляет функцию .deref(), которая возвращает исходную Variable.

x = tf.Variable(5)
x.ref().deref()
<tf.Variable 'Variable:0' shape=() dtype=int32, numpy=5>

scatter_add

Посмотреть исходный код

scatter_add(
    sparse_delta, use_locking=False, name=None
)

Добавляет tf.IndexedSlices к этой переменной.

Аргументы
sparse_delta tf.IndexedSlices, который нужно добавить к этой переменной.
use_locking Если True, во время операции используется блокировка.
name имя операции.
Возвращает
Обновленную переменную.
Вызывает исключение
TypeError если sparse_delta не является IndexedSlices.

scatter_div

Посмотреть исходный код

scatter_div(
    sparse_delta, use_locking=False, name=None
)

Делит эту переменную на tf.IndexedSlices.

Аргументы
sparse_delta tf.IndexedSlices, на который нужно разделить эту переменную.
use_locking Если True, во время операции используется блокировка.
name имя операции.
Возвращает
Обновленную переменную.
Вызывает исключение
TypeError если sparse_delta не является IndexedSlices.

scatter_max

Посмотреть исходный код

scatter_max(
    sparse_delta, use_locking=False, name=None
)

Обновляет эту переменную, используя максимум из tf.IndexedSlices и самой переменной.

Аргументы
sparse_delta tf.IndexedSlices, используемый в качестве аргумента функции max вместе с этой переменной.
use_locking Если True, во время операции используется блокировка.
name имя операции.
Возвращает
Обновленную переменную.
Вызывает исключение
TypeError если sparse_delta не является IndexedSlices.

scatter_min

Посмотреть исходный код

scatter_min(
    sparse_delta, use_locking=False, name=None
)

Обновляет эту переменную, используя минимум из tf.IndexedSlices и самой переменной.

Аргументы
sparse_delta tf.IndexedSlices, используемый в качестве аргумента функции min вместе с этой переменной.
use_locking Если True, во время операции используется блокировка.
name имя операции.
Возвращает
Обновленную переменную.
Вызывает исключение
TypeError если sparse_delta не является IndexedSlices.

scatter_mul

Посмотреть исходный код

scatter_mul(
    sparse_delta, use_locking=False, name=None
)

Умножает эту переменную на tf.IndexedSlices.

Аргументы
sparse_delta tf.IndexedSlices, на который нужно умножить эту переменную.
use_locking Если True, во время операции используется блокировка.
name имя операции.
Возвращает
Обновленную переменную.
Вызывает исключение
TypeError если sparse_delta не является IndexedSlices.

scatter_nd_add

Посмотреть исходный код

scatter_nd_add(
    indices, updates, name=None
)

Выполняет разреженное сложение отдельных значений или срезов в Variable.

Variable имеет ранг P, а indices является Tensor ранга Q.

indices должен быть целочисленным тензором, содержащим индексы в self. Его форма должна быть [d_0, ..., d_{Q-2}, K], где 0 < K <= P.

Самое внутреннее измерение indices (длиной K) соответствует индексам элементов (если K = P) или срезов (если K < P) вдоль измерения self с номером K.

updates — это Tensor ранга Q-1+P-K следующей формы:

[d_0, ..., d_{Q-2}, self.shape[K], ..., self.shape[P-1]].

Например, предположим, что мы хотим добавить 4 разрозненных элемента к тензору ранга 1 из 8 элементов. В Python такое обновление выглядело бы так:

v = tf.Variable([1, 2, 3, 4, 5, 6, 7, 8])
indices = tf.constant([[4], [3], [1] ,[7]])
updates = tf.constant([9, 10, 11, 12])
v.scatter_nd_add(indices, updates)
print(v)

В результате обновление v будет выглядеть так:

[1, 13, 3, 14, 14, 6, 7, 20]

Подробнее о том, как обновлять срезы, см. в разделе tf.scatter_nd.

Аргументы
indices Индексы, используемые в операции.
updates Значения, используемые в операции.
name имя операции.
Возвращает
Обновленную переменную.

scatter_nd_sub

Посмотреть исходный код

scatter_nd_sub(
    indices, updates, name=None
)

Выполняет разреженное вычитание отдельных значений или срезов в Variable.

Предполагается, что ранг переменной равен P, а indices является Tensor ранга Q.

indices должен быть целочисленным тензором, содержащим индексы в self. Его форма должна быть [d_0, ..., d_{Q-2}, K], где 0 < K <= P.

Самое внутреннее измерение indices (длиной K) соответствует индексам элементов (если K = P) или срезов (если K < P) вдоль измерения self с номером K.

updates — это Tensor ранга Q-1+P-K следующей формы:

[d_0, ..., d_{Q-2}, self.shape[K], ..., self.shape[P-1]].

Например, предположим, что мы хотим добавить 4 разрозненных элемента к тензору ранга 1 из 8 элементов. В Python такое обновление выглядело бы так:

v = tf.Variable([1, 2, 3, 4, 5, 6, 7, 8])
indices = tf.constant([[4], [3], [1] ,[7]])
updates = tf.constant([9, 10, 11, 12])
v.scatter_nd_sub(indices, updates)
print(v)

После обновления v будет выглядеть так:

[1, -9, 3, -6, -4, 6, 7, -4]

Подробнее о том, как обновлять срезы, см. в разделе tf.scatter_nd.

Аргументы
indices Индексы, используемые в операции.
updates Значения, используемые в операции.
name имя операции.
Возвращает
Обновленную переменную.

scatter_nd_update

Посмотреть исходный код

scatter_nd_update(
    indices, updates, name=None
)

Выполняет разреженное присваивание отдельных значений или срезов в Variable.

Variable имеет ранг P, а indices является Tensor ранга Q.

indices должен быть целочисленным тензором, содержащим индексы в self. Его форма должна быть [d_0, ..., d_{Q-2}, K], где 0 < K <= P.

Самое внутреннее измерение indices (длиной K) соответствует индексам элементов (если K = P) или срезов (если K < P) вдоль измерения self с номером K.

updates — это Tensor ранга Q-1+P-K следующей формы:

[d_0, ..., d_{Q-2}, self.shape[K], ..., self.shape[P-1]].

Например, предположим, что мы хотим добавить 4 разрозненных элемента к тензору ранга 1 из 8 элементов. В Python такое обновление выглядело бы так:

v = tf.Variable([1, 2, 3, 4, 5, 6, 7, 8])
indices = tf.constant([[4], [3], [1] ,[7]])
updates = tf.constant([9, 10, 11, 12])
v.scatter_nd_update(indices, updates)
print(v)

В результате обновление v будет выглядеть так:

[1, 11, 3, 10, 9, 6, 7, 12]

Подробнее о том, как обновлять срезы, см. в разделе tf.scatter_nd.

Аргументы
indices Индексы, используемые в операции.
updates Значения, используемые в операции.
name имя операции.
Возвращает
Обновленную переменную.

scatter_sub

Посмотреть исходный код

scatter_sub(
    sparse_delta, use_locking=False, name=None
)

Вычитает tf.IndexedSlices из этой переменной.

Аргументы
sparse_delta tf.IndexedSlices, который нужно вычесть из этой переменной.
use_locking Если True, во время операции используется блокировка.
name имя операции.
Возвращает
Обновленную переменную.
Вызывает исключение
TypeError если sparse_delta не является IndexedSlices.

scatter_update

Посмотреть исходный код

scatter_update(
    sparse_delta, use_locking=False, name=None
)

Присваивает этой переменной значение tf.IndexedSlices.

Аргументы
sparse_delta tf.IndexedSlices, которое нужно присвоить этой переменной.
use_locking Если True, во время операции используется блокировка.
name имя операции.
Возвращает
Обновленную переменную.
Вызывает исключение
TypeError если sparse_delta не является IndexedSlices.

set_shape

Посмотреть исходный код

set_shape(
    shape
)

Переопределяет форму этой переменной.

Аргументы
shape TensorShape, задающая переопределенную форму.

sparse_read

Посмотреть исходный код

sparse_read(
    indices, name=None
)

Извлекает срезы из params по оси axis в соответствии с индексами.

Эта функция поддерживает подмножество возможностей tf.gather; подробности использования см. в документации tf.gather.

Аргументы
indices Индекс Tensor. Должен иметь один из следующих типов: int32, int64. Должен находиться в диапазоне [0, params.shape[axis]).
name Имя операции (необязательно).
Возвращает
Tensor. Имеет тот же тип, что и params.

to_proto

Посмотреть исходный код

to_proto(
    export_scope=None
)

Преобразует Variable в протокол-буфер VariableDef.

Аргументы
export_scope Необязательный string. Пространство имен, которое нужно удалить.
Возвращает
Протокол-буфер VariableDef или None, если Variable не входит в указанное пространство имен.

value

Посмотреть исходный код

value()

Возвращает последний снимок этой переменной.

Обычно вызывать этот метод не требуется, так как все операции, которым нужно значение переменной, вызывают его автоматически с помощью вызова convert_to_tensor().

Возвращает Tensor, содержащий значение переменной. Этому тензору нельзя присвоить новое значение, поскольку он не является ссылкой на переменную.

Чтобы избежать копирования, если устройство потребителя возвращенного значения совпадает с устройством переменной, возвращается текущее значение переменной, а не копия. Потребитель видит изменения переменной. Если потребитель находится на другом устройстве, он получает копию переменной.

Возвращает
Tensor, содержащее значение переменной.

__abs__

Посмотреть исходный код

__abs__(
    name=None
)

__add__

Посмотреть исходный код

__add__(
    y
)

__and__

Посмотреть исходный код

__and__(
    y
)

__div__

Посмотреть исходный код

__div__(
    y
)

__eq__

Посмотреть исходный код

__eq__(
    other
)

Поэлементно сравнивает две переменные на равенство.

__floordiv__

Посмотреть исходный код

__floordiv__(
    y
)

__ge__

__ge__(
    y: Annotated[Any, tf.raw_ops.Any],
    name=None
) -> Annotated[Any, tf.raw_ops.Any]

Поэлементно возвращает логическое значение выражения (x >= y).

Примечание: math.greater_equal поддерживает широковещательное распространение. Подробнее о широковещательном распространении см. здесь

Пример:

x = tf.constant([5, 4, 6, 7])
y = tf.constant([5, 2, 5, 10])
tf.math.greater_equal(x, y) ==> [True, True, True, False]

x = tf.constant([5, 4, 6, 7])
y = tf.constant([5])
tf.math.greater_equal(x, y) ==> [True, False, True, True]
Аргументы
x Tensor. Должен иметь один из следующих типов: float32, float64, int32, uint8, int16, int8, int64, bfloat16, uint16, half, uint32, uint64.
y Tensor. Должен иметь тот же тип, что и x.
name Имя операции (необязательно).
Возвращает
Tensor типа bool.

__getitem__

Посмотреть исходный код

__getitem__(
    slice_spec
)

Создает вспомогательный объект среза для заданной переменной.

Это позволяет создать подтензор из части текущего содержимого переменной. Подробные примеры создания срезов см. в разделе tf.Tensor.getitem.

Кроме того, эта функция позволяет присваивать значения выбранному диапазону. Это аналог функциональности __setitem__ в Python. Однако синтаксис отличается, чтобы пользователь мог сохранить операцию присваивания для группировки или передачи в sess.run() в TF1. Например:

import tensorflow as tf
A = tf.Variable([[1,2,3], [4,5,6], [7,8,9]], dtype=tf.float32)
print(A[:2, :2])  # => [[1,2], [4,5]]

A[:2,:2].assign(22. * tf.ones((2, 2))))
print(A) # => [[22, 22, 3], [22, 22, 6], [7,8,9]]

Обратите внимание, что в настоящее время присваивания не поддерживают семантику широковещательного распространения NumPy.

Аргументы
var Объект ops.Variable.
slice_spec Аргументы для Tensor.getitem.
Возвращает
Соответствующий срез «tensor», заданный параметром «slice_spec», в виде оператора. У этого оператора также есть метод assign(), который можно использовать для создания оператора присваивания.
Вызывает исключение
ValueError Если размер диапазона среза отрицателен.
TypeError TypeError: если индексы среза не являются целыми числами, объектами slice, многоточием, tf.newaxis или тензорами int32/int64.

__gt__

__gt__(
    y: Annotated[Any, tf.raw_ops.Any],
    name=None
) -> Annotated[Any, tf.raw_ops.Any]

Поэлементно возвращает логическое значение выражения (x > y).

Примечание: math.greater поддерживает широковещательное распространение. Подробнее о широковещательном распространении см. здесь

Пример:

x = tf.constant([5, 4, 6])
y = tf.constant([5, 2, 5])
tf.math.greater(x, y) ==> [False, True, True]

x = tf.constant([5, 4, 6])
y = tf.constant([5])
tf.math.greater(x, y) ==> [False, False, True]
Аргументы
x Tensor. Должен иметь один из следующих типов: float32, float64, int32, uint8, int16, int8, int64, bfloat16, uint16, half, uint32, uint64.
y Tensor. Должен иметь тот же тип, что и x.
name Имя операции (необязательно).
Возвращает
Tensor типа bool.

__invert__

Посмотреть исходный код

__invert__(
    name=None
)

__iter__

Посмотреть исходный код

__iter__()

При eager-выполнении перебирает значения переменной.

__le__

__le__(
    y: Annotated[Any, tf.raw_ops.Any],
    name=None
) -> Annotated[Any, tf.raw_ops.Any]

Поэлементно возвращает логическое значение выражения (x <= y).

Примечание: math.less_equal поддерживает широковещательное распространение. Подробнее о широковещательном распространении см. здесь

Пример:

x = tf.constant([5, 4, 6])
y = tf.constant([5])
tf.math.less_equal(x, y) ==> [True, True, False]

x = tf.constant([5, 4, 6])
y = tf.constant([5, 6, 6])
tf.math.less_equal(x, y) ==> [True, True, True]
Аргументы
x Tensor. Должен иметь один из следующих типов: float32, float64, int32, uint8, int16, int8, int64, bfloat16, uint16, half, uint32, uint64.
y Tensor. Должен иметь тот же тип, что и x.
name Имя операции (необязательно).
Возвращает
Tensor типа bool.

__lt__

__lt__(
    y: Annotated[Any, tf.raw_ops.Any],
    name=None
) -> Annotated[Any, tf.raw_ops.Any]

Поэлементно возвращает логическое значение выражения (x < y).

Примечание: math.less поддерживает широковещательное распространение. Подробнее о широковещательном распространении см. здесь

Пример:

x = tf.constant([5, 4, 6])
y = tf.constant([5])
tf.math.less(x, y) ==> [False, True, False]

x = tf.constant([5, 4, 6])
y = tf.constant([5, 6, 7])
tf.math.less(x, y) ==> [False, True, True]
Аргументы
x Tensor. Должен иметь один из следующих типов: float32, float64, int32, uint8, int16, int8, int64, bfloat16, uint16, half, uint32, uint64.
y Tensor. Должен иметь тот же тип, что и x.
name Имя операции (необязательно).
Возвращает
A Tensor of type bool.

__matmul__

Посмотреть исходный код

__matmul__(
    y
)

__mod__

Посмотреть исходный код

__mod__(
    y
)

__mul__

Посмотреть исходный код

__mul__(
    y
)

__ne__

Посмотреть исходный код

__ne__(
    other
)

Сравнивает два тензора поэлементно на равенство.

__neg__

__neg__(
    name=None
) -> Annotated[Any, tf.raw_ops.Any]

Вычисляет поэлементное отрицательное значение.

То есть \(y = -x\).

Аргументы
x A Tensor. Must be one of the following types: bfloat16, half, float32, float64, int8, int16, int32, int64, complex64, complex128.
name Имя операции (необязательно).
Возвращает
A Tensor. Has the same type as x.

__or__

Посмотреть исходный код

__or__(
    y
)

__pow__

Посмотреть исходный код

__pow__(
    y
)

__radd__

Посмотреть исходный код

__radd__(
    x
)

__rand__

Посмотреть исходный код

__rand__(
    x
)

__rdiv__

Посмотреть исходный код

__rdiv__(
    x
)

__rfloordiv__

Посмотреть исходный код

__rfloordiv__(
    x
)

__rmatmul__

Посмотреть исходный код

__rmatmul__(
    x
)

__rmod__

Посмотреть исходный код

__rmod__(
    x
)

__rmul__

Посмотреть исходный код

__rmul__(
    x
)

__ror__

Посмотреть исходный код

__ror__(
    x
)

__rpow__

Посмотреть исходный код

__rpow__(
    x
)

__rsub__

Посмотреть исходный код

__rsub__(
    x
)

__rtruediv__

Посмотреть исходный код

__rtruediv__(
    x
)

__rxor__

Посмотреть исходный код

__rxor__(
    x
)

__sub__

Посмотреть исходный код

__sub__(
    y
)

__truediv__

Посмотреть исходный код

__truediv__(
    y
)

__xor__

Посмотреть исходный код

__xor__(
    y
)

© 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/Variable

Spec-Zone.ru

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