تنسورفلو:: محدوده
#include <scope.h> یک شیء Scope مجموعهای از عملیات مرتبط TensorFlow را نشان میدهد که دارای ویژگیهای یکسانی مانند پیشوند نام مشترک هستند.
خلاصه
یک شیء Scope ظرفی برای ویژگیهای Op در TensorFlow است. سازندههای 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<> را ارائه میدهد که یک scope جدید ایجاد میکنند. scope جدید معمولاً یک ویژگی را تغییر میدهد در حالی که سایر ویژگیها از scope والد به ارث میرسند. متد NewSubScope(name) name به پیشوند نامهای ops ایجاد شده در scope اضافه میکند و 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 ایجاد میشود. این کار منابعی را ایجاد میکند که توسط همه محدودههای فرزند که از این محدوده به ارث میرسند، به طور مستقیم یا به صورت انتقالی، به اشتراک گذاشته میشوند. به عنوان مثال، یک محدوده جدید یک شیء Graph جدید ایجاد میکند که وقتی محدوده جدید یا فرزندان آن توسط سازنده Op استفاده میشوند، عملیات به آن اضافه میشوند. محدوده جدید همچنین دارای یک شیء Status است که برای نشان دادن خطاهای توابع سازنده Op که روی هر محدوده فرزند فراخوانی میشوند، استفاده میشود. توابع سازنده Op باید قبل از ادامه ساخت op، وضعیت محدوده را با فراخوانی متد ok() بررسی کنند.
ایمنی نخ:
یک شیء Scope از نظر thread-safe نیست. 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() برابر با Status::OK() باشد، شیء Graph ذخیره شده در این scope را به یک نمونه 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
تمام محدودیتهای مربوط به فضای اشتراکگذاری را پاک کنید.
کولوکیت با
Scope ColocateWith( const Operation & op ) const
یک محدوده جدید را برگردانید.
تمام عملیاتهای ایجاد شده در محدودهی برگردانده شده، در دستگاهی که عملیات در آن قرار دارد، قرار خواهند گرفت. توجه: این تابع فقط برای استفاده از کتابخانههای داخلی جهت کنترل قرارگیری عملیاتها در دستگاهها در نظر گرفته شده است. استفادهی عمومی توصیه نمیشود زیرا پیادهسازی قرارگیری دستگاه ممکن است تغییر کند.
خطای خروج
Scope ExitOnError() const
یک محدوده جدید را برگردانید.
توابع سازندهی عملیاتی که دامنهی بازگشتی را به عنوان آرگومان دامنه دریافت میکنند، به محض شناسایی خطا، به جای تنظیم وضعیت در دامنه، از آن خارج میشوند.
GetCompositeOpScops
CompositeOpScopes GetCompositeOpScopes( const string & composite_op_name ) const
GetUniqueNameForOp
string GetUniqueNameForOp( const string & default_name ) const
اگر نام عملیاتی مشخص نشده باشد، با استفاده از default_name یک نام منحصر به فرد را برمیگرداند.
زیردامنه جدید
Scope NewSubScope( const string & child_scope_name ) const
یک محدوده جدید را برگردانید.
عملیاتهایی که با این دامنه ایجاد میشوند، پیشوند name/child_scope_name را خواهند داشت. نام واقعی در دامنه فعلی منحصر به فرد خواهد بود. تمام ویژگیهای دیگر از دامنه فعلی به ارث میرسند. اگر child_scope_name خالی باشد، / حذف میشود.
دامنه
Scope( const Scope & other )
توگراف دف
Status ToGraphDef( GraphDef *gdef ) const
اگر status() برابر با Status::OK() باشد، شیء Graph ذخیره شده در این scope را به یک نمونه GraphDef تبدیل کرده و Status::OK() را برمیگرداند.
در غیر این صورت، وضعیت خطا را بدون انجام تبدیل GraphDef، به همان صورت که هست، برگردانید.
وضعیت بهروزرسانی
void UpdateStatus( const Status & s ) const
وضعیت این محدوده را بهروزرسانی کنید.
نکته: شیء status بین همه فرزندان این scope مشترک است. اگر status حاصل Status::OK() نباشد و exit_on_error_ روی این scope تنظیم شده باشد، این تابع با فراخوانی LOG(FATAL) خارج میشود.
با دستگاه اختصاص داده شده
Scope WithAssignedDevice( const string & assigned_device ) const
یک محدوده جدید را برمیگرداند.
تمام عملیاتهای ایجاد شده در محدودهی بازگشتی، دستگاه اختصاص داده شده به خود را روی assigned_device تنظیم خواهند کرد.
وابستگیهای با کنترل
Scope WithControlDependencies( const gtl::ArraySlice< Operation > & control_deps ) const
یک محدوده جدید را برگردانید.
تمام عملیاتهای ایجاد شده در محدودهی بازگشتی، به عنوان وابستگیهای کنترلی، اتحاد عملیات در بردار control_deps و وابستگیهای کنترلی محدودهی فعلی را خواهند داشت.
وابستگیهای با کنترل
Scope WithControlDependencies( const Output & control_dep ) const
مشابه مورد بالا، اما برای اضافه کردن وابستگی کنترلی به عملیاتی که خروجی control_dep را تولید میکند، مناسب است.
با دستگاه
Scope WithDevice( const string & device ) const
یک محدوده جدید را برگردانید.
تمام عملیاتهای ایجاد شده در محدودهی بازگشتی، فیلد دستگاه را روی «دستگاه» تنظیم خواهند کرد.
با برچسب هسته
Scope WithKernelLabel( const string & kernel_label ) const
یک محدوده جدید را برگردانید.
تمام عملیاتهایی که با دامنه جدید ایجاد میشوند، مقدار kernel_label را برای ویژگی '_kernel' خود خواهند داشت؛
بدون وابستگیهای کنترلی
Scope WithNoControlDependencies() const
یک محدوده جدید را برگردانید.
تمام عملیاتهای ایجاد شده در محدودهی بازگشتی، هیچ وابستگی کنترلی به عملیاتهای دیگر نخواهند داشت.
با نام عملیات
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()
توابع استاتیک عمومی
نیوروتاسکوپ
Scope NewRootScope()
یک محدوده جدید را برگردانید.
این یک گراف جدید ایجاد میکند و تمام عملیات ساخته شده در این گراف باید از شیء برگشتی به عنوان دامنه "ریشه" استفاده کنند.
جز در مواردی که غیر از این ذکر شده باشد،محتوای این صفحه تحت مجوز Creative Commons Attribution 4.0 License است. نمونه کدها نیز دارای مجوز Apache 2.0 License است. برای اطلاع از جزئیات، به خطمشیهای سایت Google Developers مراجعه کنید. جاوا علامت تجاری ثبتشده Oracle و/یا شرکتهای وابسته به آن است.
تاریخ آخرین بهروزرسانی 2026-11-05 بهوقت ساعت هماهنگ جهانی.