tensorflow:: Scope
#include <scope.h> يمثل كائن Scope مجموعة من عمليات TensorFlow ذات الصلة التي لها نفس الخصائص مثل بادئة الاسم المشتركة.
ملخص
كائن النطاق هو حاوية لخصائص عملية TensorFlow. تتلقى دوال إنشاء العمليات كائن نطاق كمعامل أول إلزامي، وتكتسب العملية المُنشأة الخصائص الموجودة في هذا الكائن.
مثال بسيط:
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() اللاحقة التي تكون افتراضيًا لنوع العملية.
أمثلة على الأسماء:
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` التحقق من حالة النطاق باستدعاء الدالة `ok()` قبل المتابعة في إنشاء العملية.
أمان الخيوط:
كائن Scope ليس آمناً للاستخدام في بيئة متعددة الخيوط. لا يمكن للخيوط استدعاء دوال البناء (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::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 () | أعد نطاقًا جديدًا. |
الوظائف العامة
موقع مشترك مع
Scope ColocateWith( const Operation & op ) const
أعد نطاقًا جديدًا.
ستُوضع جميع العمليات المُنشأة ضمن النطاق المُعاد على نفس الجهاز الذي وُضعت عليه العملية. ملاحظة: هذه الوظيفة مُخصصة للاستخدام في المكتبات الداخلية فقط للتحكم في وضع العمليات على الأجهزة. لا يُنصح باستخدامها للعامة لأن آلية وضع العمليات على الأجهزة قابلة للتغيير.
الخروج عند الخطأ
Scope ExitOnError() const
أعد نطاقًا جديدًا.
ستخرج وظائف البناء op التي تأخذ النطاق المرجعي كوسيط النطاق بمجرد اكتشاف خطأ، بدلاً من تعيين الحالة على النطاق.
الحصول على نطاقات التشغيل المركبة
CompositeOpScopes GetCompositeOpScopes( const string & composite_op_name ) const
الحصول على اسم فريد للعملية
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 )
ToGraphDef
Status ToGraphDef( GraphDef *gdef ) const
إذا كانت الحالة () هي Status::OK()، فقم بتحويل كائن Graph المخزن في هذا النطاق إلى نموذج GraphDef وأرجع Status::OK().
وإلا، فأعد حالة الخطأ كما هي دون إجراء تحويل GraphDef.
تحديث الحالة
void UpdateStatus( const Status s ) const
قم بتحديث الحالة على هذا النطاق.
ملاحظة: يتم مشاركة كائن الحالة بين جميع العناصر الفرعية لهذا النطاق. إذا لم تكن الحالة الناتجة هي Status::OK() وتم تعيين exit_on_error_ على هذا النطاق، فإن هذه الدالة تُنهي عملها باستدعاء 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
أعد نطاقًا جديدًا.
سيتم تعيين حقل الجهاز إلى "device" لجميع العمليات التي تم إنشاؤها ضمن النطاق المُعاد.
WithKernelLabel
Scope WithKernelLabel( const string & kernel_label ) const
أعد نطاقًا جديدًا.
جميع العمليات التي تم إنشاؤها باستخدام النطاق الجديد سيكون لها قيمة kernel_label لسمة '_kernel' الخاصة بها؛
بدون تبعيات تحكم
Scope WithNoControlDependencies() const
أعد نطاقًا جديدًا.
لن يكون لجميع العمليات التي تم إنشاؤها ضمن النطاق المُعاد أي تبعيات تحكم على عمليات أخرى.
WithOpName
Scope WithOpName( Ty... fragments ) const
أعد نطاقًا جديدًا.
جميع العمليات التي تم إنشاؤها ضمن النطاق المُعاد ستكون لها أسماء على شكل name/StrCat(fragments...)[_suffix]
مع مجموعة Xla
Scope WithXlaCluster( const string & xla_cluster ) const
يُعيد نطاقًا جديدًا.
سيتم تعيين سمة _XlaCluster لجميع العمليات التي تم إنشاؤها ضمن النطاق المُعاد إلى xla_cluster .
التبعيات_التحكمية
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 ما لم يُنصّ على خلاف ذلك، ونماذج الرموز مرخّصة بموجب ترخيص Apache 2.0. للاطّلاع على التفاصيل، يُرجى مراجعة سياسات موقع Google Developers. إنّ Java هي علامة تجارية مسجَّلة لشركة Oracle و/أو شركائها التابعين.
تاريخ التعديل الأخير: 2026-11-05 (حسب التوقيت العالمي المتفَّق عليه)