جریان تنسور:: دامنه

#include <scope.h>

یک شی Scope مجموعه ای از عملیات TensorFlow مرتبط را نشان می دهد که دارای ویژگی های یکسانی مانند پیشوند نام مشترک هستند.

خلاصه

یک شی Scope محفظه ای برای ویژگی های TensorFlow Op است. سازنده های Op یک شی Scope را به عنوان اولین آرگومان اجباری دریافت می کنند و op ساخته شده ویژگی های موجود در شی را به دست می آورد.

یک مثال ساده:

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 توابع مختلف With<> را ارائه می دهد که یک محدوده جدید ایجاد می کند. دامنه جدید معمولاً دارای یک ویژگی تغییر می کند در حالی که سایر ویژگی ها از دامنه والد به ارث می رسد. متد NewSubScope(name) name به پیشوند نام‌های عملیات ایجاد شده در محدوده اضافه می‌کند، و WithOpName() پسوند را تغییر می‌دهد که در غیر این صورت به طور پیش‌فرض به نوع op مربوط می‌شود.

نمونه های نام:

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::NewRootScope ایجاد می شود. این باعث ایجاد منابعی می شود که توسط تمام حوزه های کودک که از این محدوده به ارث می برند، به طور مستقیم یا گذرا به اشتراک گذاشته می شوند. به عنوان مثال، یک scope جدید یک شی Graph جدید ایجاد می کند که زمانی که scope جدید یا فرزندان آن توسط سازنده Op استفاده می شود، عملیات به آن اضافه می شود. دامنه جدید همچنین دارای یک آبجکت Status است که برای نشان دادن خطاها توسط توابع سازنده Op که در هر محدوده فرزند فراخوانی می شوند استفاده می شود. توابع Op-constructor باید وضعیت محدوده را با فراخوانی متد ok() قبل از ادامه ساختن op بررسی کنند.

ایمنی نخ:

یک شی Scope از نظر رشته ایمن نیست. Thread ها نمی توانند همزمان توابع op-constructor را در یک شی 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)
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 

یک محدوده جدید را برگردانید.

توابع op-constructor که محدوده بازگشتی را به‌عنوان آرگومان 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(
  const Scope & other
)

ToGraphDef

Status ToGraphDef(
  GraphDef *gdef
) const 

اگر status() Status::OK()، شی Graph ذخیره شده در این محدوده را به یک پروتو GraphDef تبدیل کنید و Status::OK() را برگردانید.

در غیر این صورت، بدون انجام تبدیل GraphDef، وضعیت خطا را همانطور که هست برگردانید.

به روز رسانی وضعیت

void UpdateStatus(
  const Status & s
) const 

وضعیت را در این محدوده به روز کنید.

توجه: شی وضعیت بین همه فرزندان این محدوده به اشتراک گذاشته شده است. اگر وضعیت به دست آمده Status::OK() نباشد و exit_on_error_ در این محدوده تنظیم شده باشد، این تابع با فراخوانی LOG(FATAL) خارج می شود.

WithAssignedDevice

Scope WithAssignedDevice(
  const string & assigned_device
) const 

محدوده جدیدی را برمی گرداند.

همه عملیات ایجاد شده در محدوده بازگردانده شده دارای دستگاه اختصاص داده شده به assigned_device خواهند بود.

WithControl Dependencies

Scope WithControlDependencies(
  const gtl::ArraySlice< Operation > & control_deps
) const 

یک محدوده جدید را برگردانید.

تمام عملیات های ایجاد شده در محدوده بازگشتی به عنوان وابستگی های کنترلی دارای اتحاد عملیات در بردار control_deps و وابستگی های کنترلی محدوده فعلی خواهند بود.

WithControl Dependencies

Scope WithControlDependencies(
  const Output & control_dep
) const 

مانند بالا، اما برای افزودن وابستگی کنترل به عملیات تولید خروجی control_dep راحت است.

WithDevice

Scope WithDevice(
  const string & device
) const 

یک محدوده جدید را برگردانید.

تمام عملیات ایجاد شده در محدوده بازگردانده شده دارای فیلد دستگاه روی «دستگاه» خواهند بود.

WithKernelLabel

Scope WithKernelLabel(
  const string & kernel_label
) const 

یک محدوده جدید را برگردانید.

تمام عملیات های ایجاد شده با دامنه جدید دارای kernel_label به عنوان مقدار ویژگی '_kernel' خود خواهند بود.

WithNoControl Dependencies

Scope WithNoControlDependencies() const 

یک محدوده جدید را برگردانید.

تمام عملیات ایجاد شده در محدوده بازگشتی هیچ وابستگی کنترلی به سایر عملیات ها نخواهند داشت.

WithOpName

Scope WithOpName(
  Ty... fragments
) const 

یک محدوده جدید را برگردانید.

همه عملیات ایجاد شده در محدوده بازگشتی دارای نام فرم name/StrCat(fragments...)[_suffix]

با XlaCluster

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 

باشه

bool ok() const 

اپراتور=

Scope & operator=(
  const Scope & other
)

وضعیت

Status status() const 

~ دامنه

 ~Scope()

توابع استاتیک عمومی

NewRootScope

Scope NewRootScope()

یک محدوده جدید را برگردانید.

این یک گراف جدید ایجاد می کند و تمام عملیات ساخته شده در این نمودار باید از شی برگشتی به عنوان دامنه "ریشه" استفاده کنند.