тензорный поток:: Сфера
#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() — это 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 | Status |
Публичные статические функции | |
---|---|
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, если имя операции не указано.
NewSubScope
Scope NewSubScope( const string & child_scope_name ) const
Вернуть новую область.
Операции, созданные с этой областью, будут иметь префикс name/child_scope_name
. Фактическое имя будет уникальным в текущей области. Все остальные свойства наследуются от текущей области. Если child_scope_name
пусто, /
опускается.
Сфера
Scope( const Scope & other )
ТоГрафДеф
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).
С назначенным устройством
Scope WithAssignedDevice( const string & assigned_device ) const
Возвращает новую область.
Для всех операций, созданных в пределах возвращаемой области, assigned_device
устройство будет иметь значениеassign_device .
Витконтролзависимости
Scope WithControlDependencies( const gtl::ArraySlice< Operation > & control_deps ) const
Вернуть новую область.
Все операции, созданные в возвращаемой области, будут иметь в качестве управляющих зависимостей объединение операций в векторе control_deps и управляющие зависимости текущей области.
Витконтролзависимости
Scope WithControlDependencies( const Output & control_dep ) const
То же, что и выше, но удобно добавить зависимость управления от операции, производящей вывод control_dep.
с устройством
Scope WithDevice( const string & device ) const
Вернуть новую область.
Для всех операций, созданных в возвращаемой области, в поле устройства будет установлено значение «устройство».
Виткернеллейбл
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
Ok
bool ok() const
статус
Status status() const
~Область
~Scope()
Публичные статические функции
NewRootScope
Scope NewRootScope()
Вернуть новую область.
Это создает новый граф, и все операции, созданные в этом графе, должны использовать возвращенный объект в качестве «корневой» области.