Spec-Zone.ru › TensorFlow C++ 1.15

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:

Класс 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:

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

Безопасность потоков:

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

Конструкторы и деструкторы
Scope(const Scope & other)
~Scope()
Публичные функции
ClearColocation() const
Scope
Очистить все ограничения размещения.
ColocateWith(const Operation & op) const
Scope
Возвращает новую область видимости.
ColocateWith(const Output & out) const
Scope
Функция-обёртка для вышеуказанной функции.
ExitOnError() const
Scope
Возвращает новую область видимости.
GetCompositeOpScopes(const string & composite_op_name) const
CompositeOpScopes
GetUniqueNameForOp(const string & default_name) const
string
Возвращает уникальное имя, используя default_name, если имя операции не указано.
NewSubScope(const string & child_scope_name) const
Scope
Возвращает новую область видимости.
ToGraphDef(GraphDef *gdef) const
Status
Если status() равен Status::OK(), преобразовать объект Graph, хранящийся в этой области видимости, в прото GraphDef и вернуть Status::OK().
UpdateStatus(const Status & s) const
void
Обновить состояние этой области видимости.
WithAssignedDevice(const string & assigned_device) const
Scope
Возвращает новую область видимости.
WithControlDependencies(const gtl::ArraySlice< Operation > & control_deps) const
Scope
Возвращает новую область видимости.
WithControlDependencies(const Output & control_dep) const
Scope
То же самое, что и выше, но удобно для добавления зависимости управления от операции, производящей выходные данные control_dep.
WithDevice(const string & device) const
Scope
Возвращает новую область видимости.
WithKernelLabel(const string & kernel_label) const
Scope
Возвращает новую область видимости.
WithNoControlDependencies() const
Scope
Возвращает новую область видимости.
WithOpName(Ty... fragments) const
Scope
Возвращает новую область видимости.
WithXlaCluster(const string & xla_cluster) const
Scope
Возвращает новую область видимости.
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)
Scope &
status() const
Status
Публичные статические функции
NewRootScope()
Scope
Возвращает новую область видимости.

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

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

 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'.

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]

END_OF_DOCUMENT_MARKER

С кластером Xla

Scope WithXlaCluster(
  const string & xla_cluster
) const 

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

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

control_deps

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

graph

Graph * graph() const 

graph_as_shared_ptr

std::shared_ptr< Graph > graph_as_shared_ptr() const 

ok

bool ok() const 

оператор =

Scope & operator=(
  const Scope & other
)

статус

Status status() const 

~Scope

~Scope()

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

NewRootScope

Scope NewRootScope()

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

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

© 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/cc/class/tensorflow/scope

Spec-Zone.ru

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