tensorflow::Scope
#include <scope.h>
Объект Scope представляет собой набор связанных TensorFlow операций, имеющих одинаковые свойства, такие как общий префикс имени.
Summary
Объект Scope является контейнером для свойств TensorFlow Op. Конструкторы 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:
Класс 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, к которому добавляются операции, когда новая область видимости или её дочерние элементы используются конструктором Op. Новая область видимости также имеет объект Status, который будет использоваться для указания ошибок функциями-конструкторами Op, вызываемыми в любой дочерней области видимости. Функции-конструкторы Op должны проверять состояние области видимости, вызывая метод 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() равен 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() | Возвращает новую область видимости. |
Public functions
ClearColocation
Scope ClearColocation() const
Очистить все ограничения размещения.
ColocateWith
Scope ColocateWith( const Operation & op ) const
Возвращает новую область видимости.
Все операции, созданные в возвращаемой области видимости, будут размещены совместно на устройстве, где расположена операция. ПРИМЕЧАНИЕ: Эта функция предназначена для использования только в внутренних библиотеках для управления размещением операций на устройствах. Публичное использование не рекомендуется, потому что реализация размещения устройств может измениться.
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 ) 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]
WithXlaCluster
Scope WithXlaCluster( const string & xla_cluster ) const
Возвращает новую область видимости.
Все операции, созданные в возвращаемой области видимости, будут иметь свой атрибут _XlaCluster, установленный на xla_cluster.
зависимости_управления
const std::vector< Operation > & control_deps() const
график
Graph * graph() const
график_как_указатель_на_объект_с_общим_применением
std::shared_ptr< Graph > graph_as_shared_ptr() const
ОК
bool ok() const
оператор=
Scope & operator=( const Scope & other )
статус
Status status() const
~Область
~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/versions/r2.9/api_docs/cc/class/tensorflow/scope