tensorflow::Scope

#include <scope.h>

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

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

Объект Scope — это контейнер для свойств операций TensorFlow. Конструкторы операций получают объект 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, в который добавляются операции, когда новая область видимости или ее дочерние объекты используются конструктором операции. Новая область видимости также имеет объект Status , который будет использоваться для индикации ошибок функциями конструктора операции, вызываемыми в любой дочерней области видимости. Функции конструктора операции должны проверять статус области видимости, вызывая метод ok(), прежде чем переходить к созданию операции.

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

Объект Scope НЕ является потокобезопасным. Потоки не могут одновременно вызывать функции конструктора операций для одного и того же объекта 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 ()
Возвращает новую область видимости.

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

ClearColocation

Scope ClearColocation() const 

Снимите все ограничения на размещение оборудования.

ColocateWith

Scope ColocateWith(
  const Operation & op
) const 

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

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

ColocateWith

Scope ColocateWith(
  const Output & out
) const 

Удобная функция для вышеуказанного.

ExitOnError

Scope ExitOnError() const 

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

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

GetCompositeOpScopes

CompositeOpScopes GetCompositeOpScopes(
  const string & composite_op_name
) const 

GetUniqueNameForOp

string GetUniqueNameForOp(
  const string & default_name
) const 

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

NewSubScope

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.

UpdateStatus

void UpdateStatus(
  const Status s
) const 

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

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

WithAssignedDevice

Scope WithAssignedDevice(
  const string & assigned_device
) const 

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

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

WithControlDependencies

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

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

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

WithControlDependencies

Scope WithControlDependencies(
  const Output & control_dep
) const 

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

WithDevice

Scope WithDevice(
  const string & device
) const 

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

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

WithKernelLabel

Scope WithKernelLabel(
  const string & kernel_label
) const 

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

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

WithNoControlDependencies

Scope WithNoControlDependencies() const 

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

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

WithOpName

Scope WithOpName(
  Ty... fragments
) const 

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

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

WithXlaCluster

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()

Открытые статические функции

NewRootScope

Scope NewRootScope()

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

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