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 | Снять все ограничения совместного размещения. |
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, bool include_debug_info) const | Status Если status() возвращает ok, преобразует объект Graph, хранящийся в этой области видимости, в протобуфер GraphDef и возвращает статус ok. |
UpdateStatus(const Status & s) const | void Обновляет статус этой области видимости. |
WithAssignedDevice(const string & assigned_device) const | Возвращает новую область видимости. |
WithControlDependencies(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() | Возвращает новую область видимости. |
Общедоступные функции
ClearColocation
Scope ClearColocation() const
Снять все ограничения совместного размещения.
ColocateWith
Scope ColocateWith( const Operation & op ) const
Возвращает новую область видимости.
Все операции, созданные в возвращённой области видимости, будут размещены на том же устройстве, что и операция op. ПРИМЕЧАНИЕ. Эта функция предназначена только для использования во внутренних библиотеках, чтобы управлять размещением операций на устройствах. Не рекомендуется использовать её в открытом коде, поскольку реализация размещения на устройствах может измениться.
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
Если status() возвращает 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'.
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 * graph() const
graph_as_shared_ptr
std::shared_ptr< Graph > graph_as_shared_ptr() const
ok
bool ok() const
operator=
Scope & operator=( const Scope & other )
status
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