тензорный поток:: Объем

#include <scope.h>

Объект Scope представляет собой набор связанных операций TensorFlow, которые имеют одинаковые свойства, такие как общий префикс имени.

Краткое содержание

Объект Scope — это контейнер для свойств TensorFlow Op. Конструкторы операций получают объект Scope в качестве обязательного первого аргумента, а сконструированная операция приобретает свойства объекта.

Простой пример:

using namespace ops;
Scope root = Scope::NewRootScope();
auto c1 = Const(root, { {1, 1} });
auto m = MatMul(root, c1, { {41}, {1} });
GraphDef gdef;
Status s = root.ToGraphDef(&gdef);
if (!s.ok()) { ... }

Иерархия областей действия :

Класс Scope предоставляет различные функции With<>, которые создают новую область видимости. В новой области обычно изменяется одно свойство, а другие свойства наследуются от родительской области. Метод NewSubScope(name) добавляет name к префиксу имен для операций, созданных в области действия, а WithOpName() изменяет суффикс, который в противном случае по умолчанию соответствует типу операции.

Примеры названий:

Scope root = Scope::NewRootScope();
Scope linear = root.NewSubScope("linear");
// W will be named "linear/W"
auto W = Variable(linear.WithOpName("W"),
                  {2, 2}, DT_FLOAT);
// b will be named "linear/b_3"
int idx = 3;
auto b = Variable(linear.WithOpName("b_", idx),
                  {2}, DT_FLOAT);
auto x = Const(linear, {...});  // name: "linear/Const"
auto m = MatMul(linear, x, W);  // name: "linear/MatMul"
auto r = BiasAdd(linear, m, b); // name: "linear/BiasAdd"

Срок службы области :

Новая область создается путем вызова Scope::NewRootScope . Это создает некоторые ресурсы, которые совместно используются всеми дочерними областями, которые наследуются от этой области, напрямую или транзитивно. Например, новая область создает новый объект Graph, к которому добавляются операции, когда новая область или ее дочерние элементы используются конструктором Op. В новой области также есть объект Status , который будет использоваться для указания ошибок функциями Op-конструктора, вызываемыми в любой дочерней области. Функции Op-конструктора должны проверить состояние области, вызывая метод ok(), прежде чем приступить к созданию операции.

Безопасность резьбы:

Объект Scope НЕ является потокобезопасным. Потоки не могут одновременно вызывать функции op-конструктора для одного и того же объекта Scope .

Конструкторы и деструкторы

Scope (const Scope & other)
~Scope ()

Общественные функции

ClearColocation () const
Снимите все ограничения колокейшн.
ColocateWith (const Operation & op) const
Верните новую область видимости.
ColocateWith (const Output & out) const
Удобная функция, описанная выше.
ExitOnError () const
Верните новую область видимости.
GetCompositeOpScopes (const string & composite_op_name) const
GetUniqueNameForOp (const string & default_name) const
string
Возвращает уникальное имя, используя default_name, если имя операции не указано.
NewSubScope (const string & child_scope_name) const
Верните новую область видимости.
ToGraphDef (GraphDef *gdef) const
Если status() имеет значение Status::OK(), преобразуйте объект Graph, хранящийся в этой области, в прототип GraphDef и верните Status::OK().
UpdateStatus (const Status & s) const
void
Обновите статус в этой области.
WithAssignedDevice (const string & assigned_device) const
Возвращает новую область видимости.
WithControlDependencies (const gtl::ArraySlice< Operation > & control_deps) const
Верните новую область видимости.
WithControlDependencies (const Output & control_dep) const
То же, что и выше, но удобно добавить зависимость управления от операции, производящей выходные данные control_dep.
WithDevice (const string & device) const
Верните новую область видимости.
WithKernelLabel (const string & kernel_label) const
Верните новую область видимости.
WithNoControlDependencies () const
Верните новую область видимости.
WithOpName (Ty... fragments) const
Верните новую область видимости.
WithXlaCluster (const string & xla_cluster) const
Возвращает новую область видимости.
control_deps () const
const std::vector< Operation > &
graph () const
Graph *
graph_as_shared_ptr () const
std::shared_ptr< Graph >
ok () const
bool
operator= (const Scope & other)
status () const

Публичные статические функции

NewRootScope ()
Верните новую область видимости.

Общественные функции

ОчиститьКолокация

Scope ClearColocation() const 

Снимите все ограничения колокейшн.

Совместить с

Scope ColocateWith(
  const Operation & op
) const 

Верните новую область видимости.

Все операции, созданные в возвращаемой области, будут размещены на устройстве, на котором размещена операция. ПРИМЕЧАНИЕ. Эта функция предназначена для использования внутренних библиотек только для управления размещением операций на устройствах. Публичное использование не поощряется, поскольку способ размещения устройств может быть изменен.

Совместить с

Scope ColocateWith(
  const Output & out
) const 

Удобная функция, описанная выше.

Выходонеррор

Scope ExitOnError() const 

Верните новую область видимости.

Функции op-конструктора, принимающие возвращаемую область в качестве аргумента области, завершат работу, как только будет обнаружена ошибка, вместо установки статуса области.

GetCompositeOpScopes

CompositeOpScopes GetCompositeOpScopes(
  const string & composite_op_name
) const 

GetUniqueNameForOp

string GetUniqueNameForOp(
  const string & default_name
) const 

Возвращает уникальное имя, используя default_name, если имя операции не указано.

НовыйПодобласть

Scope NewSubScope(
  const string & child_scope_name
) const 

Верните новую область видимости.

Операции, созданные с этой областью, будут иметь префикс name/child_scope_name . Фактическое имя будет уникальным в текущей области. Все остальные свойства наследуются от текущей области. Если child_scope_name пусто, / опускается.

Объем

 Scope(
  const Scope & other
)

ToGraphDef

Status ToGraphDef(
  GraphDef *gdef
) const 

Если status() имеет значение Status::OK(), преобразуйте объект Graph, хранящийся в этой области, в прототип GraphDef и верните Status::OK().

В противном случае верните статус ошибки как есть, не выполняя преобразования GraphDef.

Обновление статуса

void UpdateStatus(
  const Status & s
) const 

Обновите статус в этой области.

Примечание. Объект состояния является общим для всех дочерних элементов этой области. Если результирующий статус отличается от Status::OK() и в этой области установлено значение exit_on_error_, эта функция завершается путем вызова LOG(FATAL).

WithAssignedDevice

Scope WithAssignedDevice(
  const string & assigned_device
) const 

Возвращает новую область видимости.

Для всех операций, созданных в возвращенной области, назначенное устройство будет установлено в assigned_device .

Сконтролдепенденсиес

Scope WithControlDependencies(
  const gtl::ArraySlice< Operation > & control_deps
) const 

Верните новую область видимости.

Все операции, созданные в возвращаемой области, будут иметь в качестве зависимостей управления объединение операций в векторе control_deps и зависимости управления текущей области.

Сконтролдепенденсиес

Scope WithControlDependencies(
  const Output & control_dep
) const 

То же, что и выше, но удобно добавить зависимость управления от операции, производящей выходные данные control_dep.

WithDevice

Scope WithDevice(
  const string & device
) const 

Верните новую область видимости.

Все операции, созданные в возвращаемой области, будут иметь поле устройства, установленное на «устройство».

WithKernelLabel

Scope WithKernelLabel(
  const string & kernel_label
) const 

Верните новую область видимости.

Все операции, созданные с новой областью действия, будут иметь значение kernel_label в качестве значения атрибута _kernel;

Сноконтролдепенденсиес

Scope WithNoControlDependencies() const 

Верните новую область видимости.

Все операции, созданные в возвращаемой области, не будут иметь никаких зависимостей управления от других операций.

WithOpName

Scope WithOpName(
  Ty... fragments
) const 

Верните новую область видимости.

Все операции, созданные в возвращаемой области, будут иметь имена формы name/StrCat(fragments...)[_suffix]

СXlaCluster

Scope WithXlaCluster(
  const string & xla_cluster
) const 

Возвращает новую область видимости.

Для всех операций, созданных в возвращаемой области, атрибут _XlaCluster будет иметь значение xla_cluster .

control_deps

const std::vector< Operation > & control_deps() const 

график

Graph * graph() const 

graph_as_shared_ptr

std::shared_ptr< Graph > graph_as_shared_ptr() const 

хорошо

bool ok() const 

оператор=

Scope & operator=(
  const Scope & other
)

статус

Status status() const 

~Объем

 ~Scope()

Публичные статические функции

НовыйRootScope

Scope NewRootScope()

Верните новую область видимости.

При этом создается новый граф, и все операции, построенные на этом графе, должны использовать возвращаемый объект в качестве «корневой» области.