Spec-Zone.ru › TensorFlow C++ 2.3

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 

Возвращает новый контекст.

Все операции, созданные в возвращаемом контексте, будут размещены на том же устройстве, где размещена операция 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
) 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]

WithXlaCluster

Scope WithXlaCluster(
  const string & xla_cluster
) const 

Возвращает новый контекст.

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

control_deps

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

график

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() 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/r2.3/api_docs/cc/class/tensorflow/scope

Spec-Zone.ru

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