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