Spec-Zone.ru › TensorFlow C++ 2.4

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 

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

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

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 совместно используется всеми дочерними элементами этой области видимости. Если результирующий статус не равен 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.

зависимости_управления

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

граф

Graph * graph() const 

граф_как_shared_указатель

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 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.4/api_docs/cc/class/tensorflow/scope

Spec-Zone.ru

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