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) 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() | Возвращает новую область видимости. |
Публичные функции
ClearColocation
Scope ClearColocation() const
Очистить все ограничения размещения.
ColocateWith
Scope ColocateWith( const Operation & op ) const
Возвращает новую область видимости.
Все операции, созданные в рамках возвращённой области видимости, будут размещаться на том же устройстве, где расположена операция. ПРИМЕЧАНИЕ: Эта функция предназначена для использования только внутренними библиотеками для управления размещением операций на устройствах. Общедоступное использование не рекомендуется, поскольку реализация размещения устройств может измениться.
ColocateWith
Scope ColocateWith( const Output & out ) 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
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'.
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]
С кластером Xla
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
оператор =
Scope & operator=( const Scope & other )
статус
Status status() const
~Scope
~Scope()
Публичные статические функции
NewRootScope
Scope NewRootScope()
Возвращает новую область видимости.
Это создает новую графу, и все операции, построенные в этой графе, должны использовать возвращаемый объект в качестве корневой области видимости.
© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r1.15/api_docs/cc/class/tensorflow/scope