Spec-Zone.ru › TensorFlow

tf.Variable

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

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

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

Используется в руководстве Используется в учебниках
  • Миграция контрольных точек модели
  • Введение в градиенты и автоматическое дифференцирование
  • Введение в переменные
  • Расширенное автоматическое дифференцирование
  • Улучшение производительности с tf.function
  • Масштабируемое сжатие модели
  • Пользовательский цикл обучения с Keras и MultiWorkerMirroredStrategy
  • Нейронный стиль трансфер
  • Обучение сжатию данных
  • Зоопарк обучаемых распределений

Переменная сохраняет общие, постоянные данные, изменяемые программой.

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

v = tf.Variable(1.)
v.assign(2.)
<tf.Variable ... shape=() dtype=float32, numpy=2.0>
v.assign_add(0.5)
<tf.Variable ... shape=() dtype=float32, numpy=2.5>

Аргумент shape в конструкторе Variable позволяет создать переменную с менее определенной формой, чем ее initial_value:

v = tf.Variable(1., shape=tf.TensorShape(None))
v.assign([[1.]])
<tf.Variable ... shape=<unknown> dtype=float32, numpy=array([[1.]], ...)>

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

w = tf.Variable([[1.], [2.]])
x = tf.constant([[3., 4.]])
tf.matmul(w, x)
<tf.Tensor:... shape=(2, 2), ... numpy=
  array([[3., 4.],
         [6., 8.]], dtype=float32)>
tf.sigmoid(w + x)
<tf.Tensor:... shape=(2, 2), ...>

При построении модели машинного обучения часто удобно различать переменные, содержащие обучаемые параметры модели, и другие переменные, такие как переменная step, используемая для подсчёта шагов обучения. Чтобы упростить это, конструктор переменной поддерживает параметр trainable=<bool>. tf.GradientTape по умолчанию отслеживает обучаемые переменные:

with tf.GradientTape(persistent=True) as tape:
  trainable = tf.Variable(1.)
  non_trainable = tf.Variable(2., trainable=False)
  x1 = trainable * 2.
  x2 = non_trainable * 3.
tape.gradient(x1, trainable)
<tf.Tensor:... shape=(), dtype=float32, numpy=2.0>
assert tape.gradient(x2, non_trainable) is None  # Unwatched

Переменные автоматически отслеживаются при назначении атрибутам типов, унаследованных от tf.Module.

m = tf.Module()
m.v = tf.Variable([1.])
m.trainable_variables
(<tf.Variable ... shape=(1,) ... numpy=array([1.], dtype=float32)>,)

Это отслеживание затем позволяет сохранять значения переменных в контрольных точках обучения или в SavedModels, которые включают сериализованные графики TensorFlow.

Переменные часто захватываются и обрабатываются tf.function. Это работает так же, как и у не-декорированной функции:

v = tf.Variable(0.)
read_and_decrement = tf.function(lambda: v.assign_sub(0.1))
read_and_decrement()
<tf.Tensor: shape=(), dtype=float32, numpy=-0.1>
read_and_decrement()
<tf.Tensor: shape=(), dtype=float32, numpy=-0.2>

Переменные, созданные внутри tf.function, должны принадлежать за пределами функции и создаваться только один раз:

class M(tf.Module):
  @tf.function
  def __call__(self, x):
    if not hasattr(self, "v"):  # Or set self.v to None in __init__
      self.v = tf.Variable(x)
    return self.v * x
m = M()
m(2.)
<tf.Tensor: shape=(), dtype=float32, numpy=4.0>
m(3.)
<tf.Tensor: shape=(), dtype=float32, numpy=6.0>
m.v
<tf.Variable ... shape=() dtype=float32, numpy=2.0>

См. документацию по tf.function для получения подробностей.

END_OF_DOCUMENT_MARKER
Args
initial_value A Tensor, or Python object convertible to a Tensor, which is the initial value for the Variable. The initial value must have a shape specified unless validate_shape is set to False. Can also be a callable with no argument that returns the initial value when called. In that case, dtype must be specified. (Note that initializer functions from init_ops.py must first be bound to a shape before being used here.)
trainable If True, GradientTapes automatically watch uses of this variable. Defaults to True, unless synchronization is set to ON_READ, in which case it defaults to False.
validate_shape If False, allows the variable to be initialized with a value of unknown shape. If True, the default, the shape of initial_value must be known.
caching_device Note: This argument is only valid when using a v1-style Session. Optional device string describing where the Variable should be cached for reading. Defaults to the Variable's device. If not None, caches on another device. Typical use is to cache on the device where the Ops using the Variable reside, to deduplicate copying through Switch and other conditional statements.
name Optional name for the variable. Defaults to 'Variable' and gets uniquified automatically.
variable_def VariableDef protocol buffer. If not None, recreates the Variable object with its contents, referencing the variable's nodes in the graph, which must already exist. The graph is not changed. variable_def and the other arguments are mutually exclusive.
dtype If set, initial_value will be converted to the given type. If None, either the datatype will be kept (if initial_value is a Tensor), or convert_to_tensor will decide.
import_scope Optional имя области именования. Name scope to add to the Variable. Only used when initializing from protocol buffer.
constraint An optional projection function to be applied to the variable after being updated by an Optimizer (e.g. used to implement norm constraints or value constraints for layer weights). The function must take as input the unprojected Tensor representing the value of the variable and return the Tensor for the projected value (which must have the same shape). Constraints are not safe to use when doing asynchronous distributed training.
synchronization Indicates when a distributed variable will be aggregated. Accepted values are constants defined in the class tf.VariableSynchronization. By default the synchronization is set to AUTO and the current DistributionStrategy chooses when to synchronize.
aggregation Indicates how a distributed variable will be aggregated. Accepted values are constants defined in the class tf.VariableAggregation.
shape (optional) The shape of this variable. If None, the shape of initial_value will be used. When setting this argument to tf.TensorShape(None) (representing an unspecified shape), the variable can be assigned with values of different shapes.
experimental_enable_variable_lifting Whether to lift the variable out if it's in a tf.function. Default is True. When this argument is True, variable creation will follow the behavior and restrictions described here. If this argument is False, that description doesn't apply, and you can freely create and use the variable in the tf.function, as if it's a "mutable tf.Tensor". You can't return the variable though.
Raises
ValueError If both variable_def and initial_value are specified.
ValueError If the initial value is not specified, or does not have a shape and validate_shape is True.
Attributes
aggregation
constraint Returns the constraint function associated with this variable.
device The device of this variable.
dtype The DType of this variable.
graph The Graph of this variable.
initial_value Returns the Tensor used as the initial value for the variable.

Note that this is different from initialized_value() which runs the op that initializes the variable before returning its value. This method returns the tensor that is used by the op that initializes the variable.

initializer The initializer operation for this variable.
name The name of this variable.
op The Operation of this variable.
shape The TensorShape of this variable.
synchronization
trainable

Child Classes

class SaveSliceInfo

Methods

assign

View source

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

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

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

Args
value A Tensor. Новое значение для этой переменной.
use_locking If True, use locking during the assignment.
name The name of the operation to be created
read_value if True, will return something which evaluates to the new value of the variable; if False will return the assign op.
Returns
Обновлённая переменная. Если read_value ложно, вместо этого возвращает None в режиме Eager и операцию присваивания в режиме графа.

assign_add

View source

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

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

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

Args
delta A Tensor. Значение, которое нужно добавить к этой переменной.
use_locking If True, use locking during the operation.
name The name of the operation to be created
read_value if True, will return something which evaluates to the new value of the variable; if False will return the assign op.
Returns
Обновлённая переменная. Если read_value ложно, вместо этого возвращает None в режиме Eager и операцию присваивания в режиме графа.

assign_sub

View source

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

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

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

Args
delta A Tensor. Значение, которое нужно вычесть из этой переменной.
use_locking If True, use locking during the operation.
name The name of the operation to be created
read_value if True, will return something which evaluates to the new value of the variable; if False will return the assign op.
Returns
Обновлённая переменная. Если read_value ложно, вместо этого возвращает None в режиме Eager и операцию присваивания в режиме графа.

batch_scatter_update

View source

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

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

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

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 — это тензор размерности 1, эта операция эквивалентна 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
)

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

Это не метод построения графа, он не добавляет операции в граф.

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

См. tf.gather_nd для получения подробностей.

Аргументы
indices Переменная. Должна быть одного из следующих типов: 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.

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

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

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

Основное применение этого 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(), возвращающий исходную переменную.

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 к этой переменной.

Args
sparse_delta tf.IndexedSlices для добавления к этой переменной.
use_locking Если True, использовать блокировку во время операции.
name имя операции.
Returns
Обновлённая переменная.
Raises
TypeError если sparse_delta не является IndexedSlices.

scatter_div

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

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

Разделить эту переменную на tf.IndexedSlices.

Args
sparse_delta tf.IndexedSlices для деления этой переменной.
use_locking Если True, использовать блокировку во время операции.
name имя операции.
Returns
Обновлённая переменная.
Raises
TypeError если sparse_delta не является IndexedSlices.

scatter_max

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

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

Обновить эту переменную максимальным значением из tf.IndexedSlices и её текущего значения.

Args
sparse_delta tf.IndexedSlices для использования в операции max с этой переменной.
use_locking Если True, использовать блокировку во время операции.
name имя операции.
Returns
Обновлённая переменная.
Raises
TypeError если sparse_delta не является IndexedSlices.

scatter_min

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

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

Обновить эту переменную минимальным значением из tf.IndexedSlices и её текущего значения.

Args
sparse_delta tf.IndexedSlices для использования в операции min с этой переменной.
use_locking Если True, использовать блокировку во время операции.
name имя операции.
Returns
Обновлённая переменная.
Raises
TypeError если sparse_delta не является IndexedSlices.

scatter_mul

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

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

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

Args
sparse_delta tf.IndexedSlices для умножения на эту переменную.
use_locking Если True, использовать блокировку во время операции.
name имя операции.
Returns
Обновлённая переменная.
Raises
TypeError если sparse_delta не является IndexedSlices.

scatter_nd_add

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

scatter_nd_add(
    indices, updates, name=None
)

Применяет рассыпанное сложение к отдельным значениям или срезам в переменной.

Переменная имеет ранг P, а indices — Tensor ранга Q.

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

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

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

Args
indices Индексы для использования в операции.
updates Значения для использования в операции.
name Имя операции.
Returns
Обновлённая переменная.

scatter_nd_sub

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

scatter_nd_sub(
    indices, updates, name=None
)

Применяет рассыпанное вычитание к отдельным значениям или срезам в переменной.

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

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

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

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

Args
indices Индексы для использования в операции.
updates Значения для использования в операции.
name Имя операции.
Returns
Обновлённая переменная.

scatter_nd_update

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

scatter_nd_update(
    indices, updates, name=None
)

Применяет рассыпанную замену к отдельным значениям или срезам в переменной.

Переменная имеет ранг P, а indices — Tensor ранга Q.

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

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

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, которые нужно вычесть из этой переменной.
True Если значение истинно, использовать блокировку во время операции.
name имя операции.
Возвращаемое значение
Обновленная переменная.
Исключения
TypeError если sparse_delta не является IndexedSlices.

scatter_update

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

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

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

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

set_shape

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

set_shape(
    shape
)

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

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

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 Необязательный префикс области именования.
Возвращаемое значение
Протокольный буфер 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: Если индексы среза не являются целыми числами, слайсами, эллипсами, 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 Имя операции (необязательно).
Возвращаемое значение
Объект Tensor типа 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 Объект Tensor. Должен быть одного из следующих типов: bfloat16, half, float32, float64, int8, int16, int32, int64, complex64, complex128.
name Имя операции (необязательно).
Возвращаемое значение
Объект Tensor. Имеет тот же тип, что и 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/Variable

Spec-Zone.ru

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