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 с validate_shape=False.
Как и любая Tensor, переменные, созданные с помощью Variable(), могут использоваться в качестве входных данных для других операций в графе. Кроме того, все перегруженные операторы для класса 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)
При запуске графа переменные должны быть явно инициализированы, прежде чем вы сможете запустить операции, использующие их значения. Вы можете инициализировать переменную, запустив её операцию инициализации, восстановив переменную из файла сохранения или просто запустив операцию 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 используют эту коллекцию в качестве списка по умолчанию для оптимизации переменных.
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().
| 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, also adds the variable to the graph collection GraphKeys.TRAINABLE_VARIABLES. This collection is used as the default list of variables to use by the Optimizer classes. Defaults to True, unless synchronization is set to ON_READ, in which case it defaults to False. |
collections | List of graph collections keys. The new variable is added to these collections. Defaults to [GraphKeys.GLOBAL_VARIABLES]. |
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 | 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. |
expected_shape | A TensorShape. If set, initial_value is expected to have this shape. |
import_scope | Optional name scope to add to the string. 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. |
use_resource | whether to use resource variables. |
synchronization | Indicates when a distributed a 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. |
| 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. |
RuntimeError | If eager execution is enabled. |
| 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 |
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
Methods
assign
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 равно false, вместо этого возвращает None в режиме Eager и операцию assign в режиме графа. |
assign_add
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 равно false, вместо этого возвращает None в режиме Eager и операцию assign в режиме графа. |
assign_sub
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 равно false, вместо этого возвращает None в режиме Eager и операцию assign в режиме графа. |
batch_scatter_update
batch_scatter_update(
sparse_delta, use_locking=False, name=None
)
Присваивает tf.IndexedSlices этой переменной поблочно.
Аналогично batch_gather. Это предполагает, что у этой переменной и IndexedSlices sparse_delta есть ряд ведущих измерений, которые одинаковы для всех, и обновления выполняются по последнему измерению индексов. Другими словами, измерения должны быть следующими:
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. (устарело)
При выполнении этой операции она пытается увеличить переменную на 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 | Используемая сессия для вычисления этой переменной. Если None, используется стандартная сессия. |
| Возвращаемое значение | |
|---|---|
Массив NumPy ndarray с копией значения этой переменной. |
experimental_ref
experimental_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 | Объект Tensor. Должен быть одного из следующих типов: int32, int64. Индексный тензор. |
name | Имя операции (необязательно). |
| Возвращаемое значение | |
|---|---|
Объект Tensor. Имеет тот же тип, что и params. |
get_shape
get_shape() -> tf.TensorShape
Псевдоним для Variable.shape.
initialized_value
initialized_value()
Возвращает значение инициализированной переменной. (устарело)
Вы должны использовать это вместо самой переменной, чтобы инициализировать другую переменную значением, зависящим от значения этой переменной.
# 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
)
Загружает новое значение в эту переменную. (устарело)
Записывает новое значение в память переменной. Не добавляет операции в граф.
Этот удобный метод требует сессии, в которой запущен граф, содержащий эту переменную. Если сессия не передана, используется стандартная сессия. См. 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 | Используемая сессия для вычисления этой переменной. Если None, используется стандартная сессия. |
| Исключения | |
|---|---|
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 к этой переменной.
| Аргументы | |
|---|---|
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 для вычисления максимума с этой переменной. |
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 для вычисления минимума с этой переменной. |
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
)
Применяет рассыпанное сложение к отдельным значениям или срезам в переменной.
Переменная имеет ранг P, и indices — это тензор ранга Q.
indices должен быть целочисленным тензором, содержащим индексы в self. Он должен иметь форму [d_0, ..., d_{Q-2}, K], где 0 < K <= P.
Внутреннее измерение indices (длиной K) соответствует индексам элементов (если K = P) или срезов (если K < P) вдоль K-го измерения self.
updates — это тензор ранга 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
)
Применяет рассыпанное вычитание к отдельным значениям или срезам в переменной.
Предполагая, что переменная имеет ранг P, и indices — это тензор ранга Q.
indices должен быть целочисленным тензором, содержащим индексы в self. Он должен иметь форму [d_0, ..., d_{Q-2}, K], где 0 < K <= P.
Внутреннее измерение indices (длиной K) соответствует индексам элементов (если K = P) или срезов (если K < P) вдоль K-го измерения self.
updates — это тензор ранга 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
)
Применяет рассыпанное присваивание к отдельным значениям или срезам в переменной.
Переменная имеет ранг P, и indices — это тензор ранга 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 для вычитания из этой переменной. |
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. Scope имени для удаления. |
| Возвращает | |
|---|---|
Протокол буфера VariableDef, или None, если Variable не находится в указанном scope имени. |
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
)
Создаёт объект-помощник среза для данной переменной.
END_OF_DOCUMENT_MARKERЭто позволяет создать подтензор из части текущего содержимого переменной. См. 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 | A Tensor. Должен быть одного из следующих типов: float32, float64, int32, uint8, int16, int8, int64, bfloat16, uint16, half, uint32, uint64. |
y | A Tensor. Должен иметь тот же тип, что и x. |
name | Имя операции (необязательно). |
| Возвращаемое значение | |
|---|---|
A 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 | A Tensor. Должен быть одного из следующих типов: float32, float64, int32, uint8, int16, int8, int64, bfloat16, uint16, half, uint32, uint64. |
y | A Tensor. Должен иметь тот же тип, что и x. |
name | Имя операции (необязательно). |
| Возвращаемое значение | |
|---|---|
A 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 | A Tensor. Должен быть одного из следующих типов: float32, float64, int32, uint8, int16, int8, int64, bfloat16, uint16, half, uint32, uint64. |
y | A Tensor. Должен иметь тот же тип, что и x. |
name | Имя операции (необязательно). |
| Возвращаемое значение | |
|---|---|
A 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 | A Tensor. Должен быть одного из следующих типов: bfloat16, half, float32, float64, int8, int16, int32, int64, complex64, complex128. |
name | Имя операции (необязательно). |
| Возвращаемое значение | |
|---|---|
A 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/compat/v1/Variable