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 Если статус() является 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
Возвращает новую область видимости.
Все операции, созданные в возвращаемой области видимости, будут размещены совместно на устройстве, где размещена операция. ПРИМЕЧАНИЕ: эта функция предназначена для внутреннего использования только для управления размещением операций на устройствах. Использование в публичных приложениях не рекомендуется, поскольку реализация размещения на устройствах может быть изменена.
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
Если статус() является 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'.
С меткой ядра
Scope WithKernelLabel( const string & kernel_label ) const
Возвращает новую область.
Все операции, созданные в новой области, будут иметь kernel_label в качестве значения для их атрибута '_kernel';
Без зависимостей управления
Scope WithNoControlDependencies() const
Возвращает новую область.
Все операции, созданные в возвращаемой области, не будут иметь зависимостей управления от других операций.
С именем операции
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() 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()
Возвращает новую область.
Это создает новую граф, и все операции, построенные в этом графе, должны использовать возвращаемый объект в качестве "корневой" области.
© 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