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
Если статус() является 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 

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

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

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 

Если статус() является 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'.

END_OF_DOCUMENT_MARKER

С меткой ядра

Scope WithKernelLabel(
  const string & kernel_label
) const 

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

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

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

Scope WithNoControlDependencies() const 

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

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

С именем операции

Scope WithOpName(
  Ty... fragments
) const 

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

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

С кластером XLA

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 

ok

bool ok() const 

оператор=

Scope & operator=(
  const Scope & other
)

статус

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