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
Возвращает новый контекст.
Все операции, созданные в возвращаемом контексте, будут размещены на том же устройстве, где размещена операция 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 ) 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.
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
operator=
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/r2.3/api_docs/cc/class/tensorflow/scope