Spec-Zone.ru › TensorFlow C++

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, bool include_debug_info) const
Status
Если status() возвращает ok, преобразует объект Graph, хранящийся в этой области видимости, в протобуфер GraphDef и возвращает статус ok.
UpdateStatus(const Status & s) const
void
Обновляет статус этой области видимости.
WithAssignedDevice(const string & assigned_device) const
Scope
Возвращает новую область видимости.
WithControlDependencies(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 

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

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

ColocateWith

Scope ColocateWith(
  const Output & out
) const 

Вспомогательная функция для описанного выше случая.

ExitOnError

Scope ExitOnError() const 

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

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

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,
  bool include_debug_info
) const 

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

В противном случае возвращает статус ошибки без изменений и не выполняет преобразование GraphDef. Если include_debug_info имеет значение true, заполняет поле debug_info в GraphDef данными из трасс стека этого Graph.

UpdateStatus

void UpdateStatus(
  const Status & s
) const 

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

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

WithAssignedDevice

Scope WithAssignedDevice(
  const string & assigned_device
) const 

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

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

WithControlDependencies

Scope WithControlDependencies(
  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 * graph() const 

graph_as_shared_ptr

std::shared_ptr< Graph > graph_as_shared_ptr() const 

ok

bool ok() const 

operator=

Scope & operator=(
  const Scope & other
)

status

Status status() const 

~Scope

~Scope()

Общедоступные статические функции

NewRootScope

Scope NewRootScope()

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

Создаёт новый граф; для всех операций, создаваемых в этом графе, возвращённый объект следует использовать в качестве корневой области видимости.

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

Spec-Zone.ru

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