тензорный поток:: Объем
#include <scope.h>
Объект Scope
представляет собой набор связанных операций TensorFlow, которые имеют одинаковые свойства, такие как общий префикс имени.
Краткое содержание
Объект Scope — это контейнер для свойств TensorFlow Op. Конструкторы операций получают объект 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, к которому добавляются операции, когда новая область или ее дочерние элементы используются конструктором Op. В новой области также есть объект Status , который будет использоваться для указания ошибок функциями Op-конструктора, вызываемыми в любой дочерней области. Функции Op-конструктора должны проверить состояние области, вызывая метод ok(), прежде чем приступить к созданию операции.
Безопасность резьбы:
Объект Scope
НЕ является потокобезопасным. Потоки не могут одновременно вызывать функции op-конструктора для одного и того же объекта 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 () | Верните новую область видимости. |
Общественные функции
Совместить с
Scope ColocateWith( const Operation & op ) const
Верните новую область видимости.
Все операции, созданные в возвращаемой области, будут размещены на устройстве, на котором размещена операция. ПРИМЕЧАНИЕ. Эта функция предназначена для использования внутренних библиотек только для управления размещением операций на устройствах. Публичное использование не поощряется, поскольку способ размещения устройств может быть изменен.
Выходонеррор
Scope ExitOnError() const
Верните новую область видимости.
Функции op-конструктора, принимающие возвращаемую область в качестве аргумента области, завершат работу, как только будет обнаружена ошибка, вместо установки статуса области.
GetCompositeOpScopes
CompositeOpScopes GetCompositeOpScopes( const string & composite_op_name ) const
GetUniqueNameForOp
string GetUniqueNameForOp( const string & default_name ) const
Возвращает уникальное имя, используя default_name, если имя операции не указано.
НовыйПодобласть
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.
Обновление статуса
void UpdateStatus( const Status s ) const
Обновите статус в этой области.
Примечание. Объект состояния является общим для всех дочерних элементов этой области. Если результирующий статус отличается от Status::OK() и в этой области установлено значение exit_on_error_, эта функция завершается путем вызова LOG(FATAL).
WithAssignedDevice
Scope WithAssignedDevice( const string & assigned_device ) const
Возвращает новую область видимости.
Для всех операций, созданных в возвращаемой области, назначенное устройство будет установлено в assigned_device
.
Сконтролдепенденсиес
Scope WithControlDependencies( const gtl::ArraySlice< Operation > & control_deps ) const
Верните новую область видимости.
Все операции, созданные в возвращаемой области, будут иметь в качестве зависимостей управления объединение операций в векторе control_deps и зависимости управления текущей области.
Сконтролдепенденциес
Scope WithControlDependencies( const Output & control_dep ) const
То же, что и выше, но удобно добавить зависимость управления от операции, производящей выходные данные control_dep.
WithDevice
Scope WithDevice( const string & device ) const
Верните новую область видимости.
Все операции, созданные в возвращаемой области, будут иметь поле устройства, установленное на «устройство».
WithKernelLabel
Scope WithKernelLabel( const string & kernel_label ) const
Верните новую область видимости.
Все операции, созданные с новой областью действия, будут иметь значение kernel_label в качестве значения атрибута _kernel;
Сноконтролдепенденсиес
Scope WithNoControlDependencies() const
Верните новую область видимости.
Все операции, созданные в возвращаемой области, не будут иметь никаких зависимостей управления от других операций.
WithOpName
Scope WithOpName( Ty... fragments ) const
Верните новую область видимости.
Все операции, созданные в возвращаемой области, будут иметь имена формы name/StrCat(fragments...)[_suffix]
СXlaCluster
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()
Публичные статические функции
НовыйRootScope
Scope NewRootScope()
Верните новую область видимости.
При этом создается новый граф, и все операции, построенные на этом графе, должны использовать возвращаемый объект в качестве «корневой» области.