جریان تنسور:: دامنه
#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) | Scope & |
status () const |
توابع استاتیک عمومی | |
---|---|
NewRootScope () | یک محدوده جدید را برگردانید. |
توابع عمومی
ColocateWith
Scope ColocateWith( const Operation & op ) 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
یک محدوده جدید را برگردانید.
تمام عملیات ایجاد شده در محدوده بازگردانده شده دارای فیلد دستگاه روی «دستگاه» خواهند بود.
With KernelLabel
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()
یک محدوده جدید را برگردانید.
این یک گراف جدید ایجاد می کند و تمام عملیات ساخته شده در این نمودار باید از شی برگشتی به عنوان دامنه "ریشه" استفاده کنند.
جز در مواردی که غیر از این ذکر شده باشد،محتوای این صفحه تحت مجوز Creative Commons Attribution 4.0 License است. نمونه کدها نیز دارای مجوز Apache 2.0 License است. برای اطلاع از جزئیات، به خطمشیهای سایت Google Developers مراجعه کنید. جاوا علامت تجاری ثبتشده Oracle و/یا شرکتهای وابسته به آن است.
تاریخ آخرین بهروزرسانی 2024-11-18 بهوقت ساعت هماهنگ جهانی.