Spec-Zone.ru › TensorFlow 1.15

tf.compat.v2.Variable

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

Наследуется от: CheckpointableBase

tf.compat.v2.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.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 используют эту коллекцию в качестве списка переменных по умолчанию для оптимизации.

Аргументы
initial_value A Tensor, или объект Python, преобразуемый в Tensor, который является начальным значением для Переменной. Начальное значение должно иметь указанную форму, если только validate_shape не установлено в False. Также может быть вызываемым объектом без аргументов, который возвращает начальное значение при вызове. В этом случае должно быть указано dtype. (Обратите внимание, что функции инициализации из init_ops.py должны быть связаны с формой перед использованием здесь.)
trainable Если True, GradientTapes автоматически отслеживают использование этой переменной. По умолчанию True, если synchronization не установлено в ON_READ, в этом случае по умолчанию False.
validate_shape Если False, разрешает инициализацию переменной значением неизвестной формы. Если True, по умолчанию, форма initial_value должна быть известна.
caching_device Необязательная строка устройства, описывающая, где Переменная должна быть кэширована для чтения. По умолчанию устройство Переменной. Если не None, кэшируется на другом устройстве. Типичное использование — кэширование на устройстве, где находятся Операции, использующие Переменную, для предотвращения дублирования копирования через Switch и другие условные операторы.
name Необязательное имя переменной. По умолчанию 'Variable' и автоматически уникализируется.
variable_def Протокол VariableDef буфера. Если не None, повторно создаёт объект Переменной со своим содержимым, ссылается на узлы переменной в графике, которые должны уже существовать. График не меняется. variable_def и другие аргументы взаимоисключающие.
dtype Если установлено, initial_value будет преобразовано в указанный тип. Если None, либо тип данных сохранится (если initial_value является тензором), либо convert_to_tensor определит.
import_scope Необязательный string. Область имён для добавления к Variable.. Используется только при инициализации из протокол-буфера.
constraint Необязательная функция проекции, применяемая к переменной после обновления Optimizer (например, используется для реализации ограничений по норме или ограничений значений для весов слоя). Функция должна принимать в качестве входного значения тензор, представляющий значение переменной, и возвращать тензор для проецируемого значения (форма которого должна быть одинаковой). Ограничения небезопасны для использования при асинхронной распределённой подготовке.
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 Если включена жадная обработка.
Атрибуты
aggregation
constraint Возвращает функцию ограничения, связанную с этой переменной.
device Устройство этой переменной.
dtype DType этой переменной.
graph Graph этой переменной.
initial_value Возвращает тензор, используемый в качестве начального значения для переменной.

Обратите внимание, что это отличается от 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, вернет операцию присваивания.
Возвращаемое значение
Tensor , который будет содержать новое значение этой переменной после завершения присваивания.

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

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

batch_scatter_update

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

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

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

Аналогично batch_gather. Предполагается, что у этой переменной и разреженного 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 является одномерным тензором, эта операция эквивалентна scatter_update.

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

Аргументы
sparse_delta tf.IndexedSlices для присвоения этой переменной.
use_locking Если True, использовать блокировку во время операции.
name имя операции.
Возвращает
Tensor, который будет содержать новое значение этой переменной после завершения операции рассеянного присвоения.
Возможные ошибки
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()

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

Предупреждение: Экспериментальный API, который может быть изменен или удалён.

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

import tensorflow as tf

x = tf.Variable(5)
y = tf.Variable(10)
z = tf.Variable(10)

# The followings will raise an exception starting 2.0
# TypeError: Variable is unhashable if Variable equality is enabled.
variable_set = {x, y, z}
variable_dict = {x: 'five', y: 'ten'}

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

variable_set = {x.experimental_ref(),
                y.experimental_ref(),
                z.experimental_ref()}

print(x.experimental_ref() in variable_set)
==> True

variable_dict = {x.experimental_ref(): 'five',
                 y.experimental_ref(): 'ten',
                 z.experimental_ref(): 'ten'}

print(variable_dict[y.experimental_ref()])
==> ten

Также объект ссылки предоставляет функцию .deref() для возврата исходной переменной.

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

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 int64. Индексный тензор. Должен быть одного из следующих типов: int32, int64.
name Имя операции (необязательно).
Возвращаемое значение
Tensor. Имеет тот же тип, что и params.

get_shape

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

get_shape()

Псевдоним для 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, содержащий значение переменной.

scatter_add

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

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

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

Аргументы
sparse_delta tf.IndexedSlices, который нужно добавить к этой переменной.
use_locking Если True, использовать блокировку во время операции.
name имя операции.
Возвращаемое значение
Значение Tensor, которое будет содержать новое значение этой переменной после завершения операции разбросанного сложения.
Исключения
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 имя операции.
Возвращаемое значение
Значение Tensor, которое будет содержать новое значение этой переменной после завершения операции разбросанного деления.
Исключения
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 имя операции.
Возвращаемое значение
Значение Tensor, которое будет содержать новое значение этой переменной после завершения операции разбросанного поиска максимума.
Исключения
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 имя операции.
Возвращаемое значение
Значение Tensor, которое будет содержать новое значение этой переменной после завершения операции разбросанного поиска минимума.
Исключения
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 имя операции.
Возвращает
A Tensor, который будет содержать новое значение этой переменной после завершения рассредоточенного умножения.
Возбуждает
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])
add = v.scatter_nd_add(indices, updates)
with tf.compat.v1.Session() as sess:
  print sess.run(add)

Результат обновления v будет таким:

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

См. tf.scatter_nd для получения более подробной информации о том, как выполнять обновления срезов.

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

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])
op = v.scatter_nd_sub(indices, updates)
with tf.compat.v1.Session() as sess:
  print sess.run(op)

Результат обновления v будет таким:

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

См. tf.scatter_nd для получения более подробной информации о том, как выполнять обновления срезов.

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

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])
op = v.scatter_nd_assign(indices, updates)
with tf.compat.v1.Session() as sess:
  print sess.run(op)

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

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

См. tf.scatter_nd для получения более подробной информации о том, как выполнять обновления срезов.

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

scatter_sub

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

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

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

Аргументы
sparse_delta tf.IndexedSlices, которые необходимо вычесть из этой переменной.
use_locking Если True, использовать блокировку во время операции.
name имя операции.
Возвращаемое значение
Объект Tensor, который будет содержать новое значение этой переменной после завершения операции разбросанного вычитания.
Исключения
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 имя операции.
Возвращаемое значение
Объект Tensor, который будет содержать новое значение этой переменной после завершения операции разбросанного присваивания.
Исключения
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 Необязательный string. Имя области видимости для удаления.
Возвращает
Протокол буфер VariableDef, или None если Variable не находится в указанной области видимости имени.

value

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

value()

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

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

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

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

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

__abs__

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

__abs__(
    x, name=None
)

Вычисляет абсолютное значение тензора.

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

Для тензора x комплексных чисел эта операция возвращает тензор типа float32 или float64, который является абсолютным значением каждого элемента в x. Все элементы в x должны быть комплексными числами вида \(a + bj\). Абсолютное значение вычисляется как \( \sqrt{a^2 + b^2}\). Например:

x = tf.constant([[-2.25 + 4.75j], [-3.25 + 5.75j]])
tf.abs(x)  # [5.25594902, 6.60492229]
Аргументы
x Tensor или SparseTensor типа float16, float32, float64, int32, int64, complex64 или complex128.
name Имя операции (необязательно).
Возвращает
Tensor или SparseTensor того же размера, типа и разреженности, что и x с абсолютными значениями. Обратите внимание, для complex64 или complex128 входных данных возвращаемый Tensor будет иметь тип float32 или float64, соответственно.

__add__

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

__add__(
    x, y
)

Переадресует вызов для строк и add_v2 для всех других типов.

__and__

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

__and__(
    x, y
)

Возвращает логическое значение x И y поэлементно.

Примечание: math.logical_and поддерживает векторизацию. Подробнее о векторизации здесь
Аргументы
x Tensor типа bool.
y Tensor типа bool.
name Имя операции (необязательно).
Возвращает
Tensor типа bool.

__div__

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

__div__(
    x, y
)

Делит два значения с семантикой Python 2.

Используется для Tensor.div.

Аргументы
x Tensor числитель вещественного числового типа.
y Tensor знаменатель вещественного числового типа.
name Имя операции (необязательно).
Возвращает
x / y возвращает частное от деления x на y.

__eq__

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

__eq__(
    other
)

Сравнивает два объекта попарно на равенство.

__floordiv__

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

__floordiv__(
    x, y
)

Делит x / y поэлементно, округляя к ближайшему меньшему целому.

То же самое, что и tf.compat.v1.div(x,y) для целых чисел, но использует tf.floor(tf.compat.v1.div(x,y)) для аргументов с плавающей точкой, чтобы результат всегда был целым (хотя, возможно, целым, представленным в формате с плавающей точкой). Этот оператор генерируется оператором целочисленного деления с округлением вниз в Python 3 и в Python 2.7 с from __future__ import division.

x и y должны иметь одинаковый тип, и результат также будет иметь тот же тип.

Аргументы
x Tensor числитель вещественного числового типа.
y Tensor знаменатель вещественного числового типа.
name Имя операции (необязательно).
Возвращает
x / y округлённое вниз.
Возможные исключения
TypeError Если входные данные комплексные.

__ge__

__ge__(
    x, y, name=None
)

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

Примечание: math.greater_equal поддерживает векторизацию. Подробнее о векторизации здесь
Аргументы
x Объект Tensor. Должен быть одного из следующих типов: float32, float64, int32, uint8, int16, int8, int64, bfloat16, uint16, half, uint32, uint64.
y Объект Tensor. Должен иметь тот же тип, что и x.
name Имя операции (необязательно).
Возвращает
Объект Tensor типа bool.

__getitem__

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

__getitem__(
    var, slice_spec
)

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

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

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

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

  op = A[:2,:2].assign(22. * tf.ones((2, 2)))
  print(sess.run(op))  # => [[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__(
    x, y, name=None
)

Возвращает логическое значение (x > y) поэлементно.

Примечание: math.greater поддерживает трансляцию. Подробнее о трансляции здесь
Аргументы
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__(
    x, name=None
)

Возвращает логическое значение НЕ x поэлементно.

Аргументы
x A Tensor типа bool.
name Имя операции (необязательно).
Возвращаемое значение
A Tensor типа bool.

__iter__

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

__iter__()

Метод-заглушка для предотвращения итерации.

Не вызывать.

ПРИМЕЧАНИЕ (mrry): Если мы регистрируем getitem в качестве перегруженного оператора, Python попытается итерировать по тензору переменной от 0 до бесконечности. Объявление этого метода предотвращает это непреднамеренное поведение.

Исключения
TypeError при вызове.

__le__

__le__(
    x, y, name=None
)

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

Примечание: math.less_equal поддерживает трансляцию. Подробнее о трансляции здесь
Аргументы
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__(
    x, y, name=None
)

Возвращает логическое значение (x < y) поэлементно.

Примечание: math.less поддерживает трансляцию. Подробнее о трансляции здесь
Args
x A Tensor. Must be one of the following types: float32, float64, int32, uint8, int16, int8, int64, bfloat16, uint16, half, uint32, uint64.
y A Tensor. Must have the same type as x.
name Name for the operation (optional).
Returns
A Tensor of type bool.

__matmul__

View source

__matmul__(
    x, y
)

Умножает матрицу a на матрицу b, производя a * b.

Входные данные должны, после любых транспонирований, быть тензорами ранга >= 2, где внутренние 2 измерения определяют допустимые аргументы матричного умножения, а любые дальнейшие внешние измерения совпадают.

Обе матрицы должны быть одного типа. Поддерживаемые типы: float16, float32, float64, int32, complex64, complex128.

Любая матрица может быть транспонирована или сопряжена и транспонирована на лету, установив соответствующий флаг в значение True. По умолчанию эти флаги равны False.

Если одна или обе матрицы содержат много нулей, более эффективный алгоритм умножения может быть использован, установив соответствующий флаг a_is_sparse или b_is_sparse в значение True. По умолчанию эти флаги равны False . Эта оптимизация доступна только для обычных матриц (тензоров ранга 2) с типами данных bfloat16 или float32.

Например:

# 2-D tensor `a`
# [[1, 2, 3],
#  [4, 5, 6]]
a = tf.constant([1, 2, 3, 4, 5, 6], shape=[2, 3])

# 2-D tensor `b`
# [[ 7,  8],
#  [ 9, 10],
#  [11, 12]]
b = tf.constant([7, 8, 9, 10, 11, 12], shape=[3, 2])

# `a` * `b`
# [[ 58,  64],
#  [139, 154]]
c = tf.matmul(a, b)


# 3-D tensor `a`
# [[[ 1,  2,  3],
#   [ 4,  5,  6]],
#  [[ 7,  8,  9],
#   [10, 11, 12]]]
a = tf.constant(np.arange(1, 13, dtype=np.int32),
                shape=[2, 2, 3])

# 3-D tensor `b`
# [[[13, 14],
#   [15, 16],
#   [17, 18]],
#  [[19, 20],
#   [21, 22],
#   [23, 24]]]
b = tf.constant(np.arange(13, 25, dtype=np.int32),
                shape=[2, 3, 2])

# `a` * `b`
# [[[ 94, 100],
#   [229, 244]],
#  [[508, 532],
#   [697, 730]]]
c = tf.matmul(a, b)

# Since python >= 3.5 the @ operator is supported (see PEP 465).
# In TensorFlow, it simply calls the `tf.matmul()` function, so the
# following lines are equivalent:
d = a @ b @ [[10.], [11.]]
d = tf.matmul(tf.matmul(a, b), [[10.], [11.]])
Args
a Tensor типа float16, float32, float64, int32, complex64, complex128 и ранга > 1.
b Tensor с тем же типом и рангом, что и a.
transpose_a Если True, то a транспонируется перед умножением.
transpose_b Если True, то b транспонируется перед умножением.
adjoint_a Если True, то a сопрягается и транспонируется перед умножением.
adjoint_b Если True, то b сопрягается и транспонируется перед умножением.
a_is_sparse Если True, то a обрабатывается как разреженная матрица.
b_is_sparse Если True, то b обрабатывается как разреженная матрица.
name Имя операции (необязательно).
Returns
A Tensor того же типа, что и a и b , где каждая внутренняя матрица является результатом умножения соответствующих матриц в a и b, например, если все атрибуты транспонирования или сопряжения равны False:

output[..., i, j] = sum_k (a[..., i, k] * b[..., k, j]), для всех индексов i, j.

Note Это матричное произведение, а не поэлементное произведение.
Raises
ValueError Если transpose_a и adjoint_a, или transpose_b и adjoint_b оба установлены в True.

__mod__

View source

__mod__(
    x, y
)

Возвращает остаток от деления по элементам. Когда x < 0 xor y < 0

истинно, это соответствует семантике Python, в том смысле, что результат здесь согласуется с делением с округлением к меньшему целому. Например, floor(x / y) * y + mod(x, y) = x.

Примечание: math.floormod поддерживает вещание. Подробнее о вещании здесь
Аргументы
x A Tensor. Должен быть одного из следующих типов: int32, int64, bfloat16, half, float32, float64.
y A Tensor. Должен иметь тот же тип, что и x.
name Имя операции (необязательно).
Возвращаемое значение
A Tensor. Имеет тот же тип, что и x.

__mul__

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

__mul__(
    x, y
)

Выполняет поэлементное умножение для "DenseDense" и "DenseSparse".

__ne__

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

__ne__(
    other
)

Сравнивает два объекта переменных поэлементно на равенство.

__neg__

__neg__(
    x, name=None
)

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

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

Аргументы
x A Tensor. Должен быть одного из следующих типов: bfloat16, half, float32, float64, int32, int64, complex64, complex128.
name Имя операции (необязательно).
Возвращаемое значение
A Tensor. Имеет тот же тип, что и x.

__or__

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

__or__(
    x, y
)

Возвращает логическое ИЛИ x и y поэлементно.

Примечание: math.logical_or поддерживает вещание. Подробнее о вещании здесь
Аргументы
x A Tensor типа bool.
y A Tensor типа bool.
name Имя операции (необязательно).
Возвращаемое значение
A Tensor типа bool.

__pow__

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

__pow__(
    x, y
)

Вычисляет степень одного значения по другому.

Даны тензор x и тензор y, эта операция вычисляет \(x^y\) для соответствующих элементов в x и y. Например:

x = tf.constant([[2, 2], [3, 3]])
y = tf.constant([[8, 16], [2, 3]])
tf.pow(x, y)  # [[256, 65536], [9, 27]]
Аргументы
x A Tensor типа float16, float32, float64, int32, int64, complex64, или complex128.
y A Tensor типа float16, float32, float64, int32, int64, complex64, или complex128.
name Имя операции (необязательно).
Возвращаемое значение
A Tensor.

__radd__

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

__radd__(
    y, x
)

Выполняет dispatch для сложения для строк и add_v2 для всех остальных типов.

__rand__

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

__rand__(
    y, x
)

Возвращает логическое И (AND) элементов x и y поэлементно.

Примечание: math.logical_and поддерживает трансляцию. Подробнее о трансляции здесь
Аргументы
x A Tensor типа bool.
y A Tensor типа bool.
name Имя операции (необязательно).
Возвращает
A Tensor типа bool.

__rdiv__

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

__rdiv__(
    y, x
)

Деление двух значений с использованием семантики Python 2.

Используется для Tensor.div.

Аргументы
x Tensor числитель вещественного числового типа.
y Tensor знаменатель вещественного числового типа.
name Имя операции (необязательно).
Возвращает
x / y возвращает частное x и y.

__rfloordiv__

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

__rfloordiv__(
    y, x
)

Деление x / y поэлементно, округляя в сторону наименьшего целого.

То же, что и tf.compat.v1.div(x,y) для целых чисел, но использует tf.floor(tf.compat.v1.div(x,y)) для аргументов с плавающей точкой, чтобы результат всегда был целым числом (хотя, возможно, целое число представлено с плавающей точкой). Эта операция генерируется операцией целочисленного деления с округлением вниз в Python 3 и в Python 2.7 с from __future__ import division.

x и y должны иметь одинаковый тип, а результат также будет иметь тот же тип.

Аргументы
x Tensor числитель вещественного числового типа.
y Tensor знаменатель вещественного числового типа.
name Имя операции (необязательно).
Возвращает
x / y округлённое вниз.
Возможные исключения
TypeError Если входные данные являются комплексными.

__rmatmul__

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

__rmatmul__(
    y, x
)

Умножает матрицу a на матрицу b, получая a * b.

Входы должны, после любых транспонирований, быть тензорами ранга >= 2, где внутренние 2 измерения определяют допустимые аргументы матричного умножения, а любые дополнительные внешние измерения совпадают.

Обе матрицы должны быть одного типа. Поддерживаемые типы: float16, float32, float64, int32, complex64, complex128.

Любая из матриц может быть транспонирована или сопряжена (с сопряжением и транспонированием) на лету, установив соответствующий флаг в значение True. По умолчанию эти значения равны False.

Если одна или обе матрицы содержат много нулей, может быть использован более эффективный алгоритм умножения, установив соответствующий флаг a_is_sparse или b_is_sparse в значение True. По умолчанию эти значения равны False . Эта оптимизация доступна только для обычных матриц (тензоры ранга-2) с типами данных bfloat16 или float32.

Например:

# 2-D tensor `a`
# [[1, 2, 3],
#  [4, 5, 6]]
a = tf.constant([1, 2, 3, 4, 5, 6], shape=[2, 3])

# 2-D tensor `b`
# [[ 7,  8],
#  [ 9, 10],
#  [11, 12]]
b = tf.constant([7, 8, 9, 10, 11, 12], shape=[3, 2])

# `a` * `b`
# [[ 58,  64],
#  [139, 154]]
c = tf.matmul(a, b)


# 3-D tensor `a`
# [[[ 1,  2,  3],
#   [ 4,  5,  6]],
#  [[ 7,  8,  9],
#   [10, 11, 12]]]
a = tf.constant(np.arange(1, 13, dtype=np.int32),
                shape=[2, 2, 3])

# 3-D tensor `b`
# [[[13, 14],
#   [15, 16],
#   [17, 18]],
#  [[19, 20],
#   [21, 22],
#   [23, 24]]]
b = tf.constant(np.arange(13, 25, dtype=np.int32),
                shape=[2, 3, 2])

# `a` * `b`
# [[[ 94, 100],
#   [229, 244]],
#  [[508, 532],
#   [697, 730]]]
c = tf.matmul(a, b)

# Since python >= 3.5 the @ operator is supported (see PEP 465).
# In TensorFlow, it simply calls the `tf.matmul()` function, so the
# following lines are equivalent:
d = a @ b @ [[10.], [11.]]
d = tf.matmul(tf.matmul(a, b), [[10.], [11.]])
Аргументы
a Tensor типа float16, float32, float64, int32, complex64, complex128 и ранга > 1.
b Tensor того же типа и ранга, что и a.
transpose_a Если True, a транспонируется перед умножением.
transpose_b Если True, b транспонируется перед умножением.
adjoint_a Если True, a сопрягается и транспонируется перед умножением.
adjoint_b Если True, b сопрягается и транспонируется перед умножением.
a_is_sparse Если True, a рассматривается как разреженная матрица.
b_is_sparse Если True, b рассматривается как разреженная матрица.
name Имя для операции (необязательно).
Возвращаемое значение
Tensor того же типа, что и a и b, где каждая внутренняя матрица является произведением соответствующих матриц в a и b, например, если все атрибуты транспонирования или сопряжения False:

output[..., i, j] = sum_k (a[..., i, k] * b[..., k, j]), для всех индексов i, j.

Note Это матричное произведение, а не поэлементное произведение.
Исключения
ValueError Если transpose_a и adjoint_a, или transpose_b и adjoint_b оба установлены в True.

__rmod__

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

__rmod__(
    y, x
)

Возвращает остаток от деления по элементам. Когда x < 0 или y < 0 истинно, это соответствует семантике Python, в результате чего результат здесь согласуется с делением с округлением вниз. Например, floor(x / y) * y + mod(x, y) = x.

Примечание: math.floormod поддерживает вещание. Дополнительную информацию о вещании можно найти здесь
Аргументы
x Tensor. Должен быть одним из следующих типов: int32, int64, bfloat16, half, float32, float64.
y Tensor. Должен иметь тот же тип, что и x.
name Имя для операции (необязательно).
Возвращаемое значение
Tensor. Имеет тот же тип, что и x.

__rmul__

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

__rmul__(
    y, x
)

Выполняет cwise mul для "DenseDense" и "DenseSparse".

__ror__

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

__ror__(
    y, x
)

Возвращает логическое ИЛИ x и y по элементам.

Примечание: math.logical_or поддерживает вещание. Дополнительную информацию о вещании можно найти здесь
Аргументы
x Tensor типа bool.
y Tensor типа bool.
name Имя для операции (необязательно).
Возвращаемое значение
A Tensor типа bool.

__rpow__

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

__rpow__(
    y, x
)

Вычисляет степень одного значения по другому.

Принимая тензор x и тензор y, эта операция вычисляет \(x^y\) для соответствующих элементов в x и y. Например:

x = tf.constant([[2, 2], [3, 3]])
y = tf.constant([[8, 16], [2, 3]])
tf.pow(x, y)  # [[256, 65536], [9, 27]]
Аргументы
x A Tensor типа float16, float32, float64, int32, int64, complex64, или complex128.
y A Tensor типа float16, float32, float64, int32, int64, complex64, или complex128.
name Имя операции (необязательно).
Возвращаемое значение
A Tensor.

__rsub__

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

__rsub__(
    y, x
)

Возвращает x - y поэлементно.

Примечание: Subtract поддерживает векторизацию. Дополнительную информацию о векторизации см. здесь
Аргументы
x A Tensor. Должен быть одного из следующих типов: bfloat16, half, float32, float64, uint8, int8, uint16, int16, int32, int64, complex64, complex128.
y A Tensor. Должен иметь тот же тип, что и x.
name Имя операции (необязательно).
Возвращаемое значение
A Tensor. Имеет тот же тип, что и x.

__rtruediv__

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

__rtruediv__(
    y, x
)

__rxor__

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

__rxor__(
    y, x
)

Логическая операция XOR.

x ^ y = (x | y) & ~(x & y)

На вход подаются тензоры, и если тензоры содержат более одного элемента, вычисляется поэлементное логическое XOR.

Использование:

x = tf.constant([False, False, True, True], dtype = tf.bool)
y = tf.constant([False, True, False, True], dtype = tf.bool)
z = tf.logical_xor(x, y, name="LogicalXor")
#  here z = [False  True  True False]
Аргументы
x A Tensor типа bool.
y A Tensor типа bool.
Возвращаемое значение
A Tensor типа bool с теми же размерами, что у x или y.

__sub__

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

__sub__(
    x, y
)

Возвращает x - y поэлементно.

Примечание: Subtract поддерживает векторизацию. Дополнительную информацию о векторизации см. здесь
Аргументы
x A Tensor. Должен быть одного из следующих типов: bfloat16, half, float32, float64, uint8, int8, uint16, int16, int32, int64, complex64, complex128.
y A Tensor. Должен иметь тот же тип, что и x.
name Имя операции (необязательно).
Возвращаемое значение
A Tensor. Имеет тот же тип, что и x.

__truediv__

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

__truediv__(
    x, y
)

__xor__

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

__xor__(
    x, y
)

Логическая функция XOR.

x ^ y = (x | y) & ~(x & y)

Входы — тензоры, и если тензоры содержат более одного элемента, вычисляется логическое XOR по элементам.

Использование:

x = tf.constant([False, False, True, True], dtype = tf.bool)
y = tf.constant([False, True, False, True], dtype = tf.bool)
z = tf.logical_xor(x, y, name="LogicalXor")
#  here z = [False  True  True False]
Аргументы
x A Tensor типа bool.
y A Tensor типа bool.
Возвращаемое значение
A Tensor типа bool с размером, равным размеру x или y.

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

Spec-Zone.ru

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