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() равен 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() | Возвращает новую область видимости. |
Публичные функции
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 совместно используется всеми дочерними элементами этой области видимости. Если результирующий статус не равен 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
граф_как_shared_указатель
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 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.4/api_docs/cc/class/tensorflow/scope