تدفق التوتر:: نِطَاق
#include <scope.h>
يمثل كائن Scope
مجموعة من عمليات TensorFlow ذات الصلة التي لها نفس الخصائص، مثل بادئة الاسم الشائع.
ملخص
كائن النطاق عبارة عن حاوية لخصائص TensorFlow 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()) { ... }
التسلسل الهرمي للنطاق :
توفر فئة النطاق العديد من وظائف 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 . يؤدي هذا إلى إنشاء بعض الموارد المشتركة بين كافة النطاقات التابعة التي ترث من هذا النطاق، بشكل مباشر أو انتقالي. على سبيل المثال، يقوم نطاق جديد بإنشاء كائن رسم بياني جديد تتم إضافة العمليات إليه عند استخدام النطاق الجديد أو أبنائه بواسطة مُنشئ العمليات. يحتوي النطاق الجديد أيضًا على كائن الحالة الذي سيتم استخدامه للإشارة إلى الأخطاء بواسطة وظائف مُنشئ العمليات التي يتم استدعاؤها في أي نطاق فرعي. يجب أن تتحقق وظائف Op-constructor من حالة النطاق عن طريق استدعاء الأسلوب 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 إذا كانت الحالة () هي الحالة::OK()، فقم بتحويل كائن الرسم البياني المخزن في هذا النطاق إلى نموذج GraphDef وإرجاع الحالة::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 () | إرجاع نطاق جديد. |
الوظائف العامة
ColocateWith
Scope ColocateWith( const Operation & op ) 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( const Scope & other )
ToGraphDef
Status ToGraphDef( GraphDef *gdef ) const
إذا كانت الحالة () هي الحالة::OK()، فقم بتحويل كائن الرسم البياني المخزن في هذا النطاق إلى نموذج GraphDef وإرجاع الحالة::OK().
بخلاف ذلك، قم بإرجاع حالة الخطأ كما هي دون إجراء تحويل GraphDef.
UpdateStatus
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
إرجاع نطاق جديد.
سيتم تعيين حقل الجهاز على "الجهاز" لجميع العمليات التي تم إنشاؤها ضمن النطاق الذي تم إرجاعه.
مع KernelLabel
Scope WithKernelLabel( const string & kernel_label ) const
إرجاع نطاق جديد.
جميع العمليات التي تم إنشاؤها باستخدام النطاق الجديد سيكون لها kernel_label كقيمة للسمة '_kernel' الخاصة بها؛
مع عدم التحكم في التبعيات
Scope WithNoControlDependencies() const
إرجاع نطاق جديد.
جميع العمليات التي تم إنشاؤها ضمن النطاق الذي تم إرجاعه لن يكون لها أي تبعيات تحكم على العمليات الأخرى.
معOpName
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
نعم
bool ok() const
المشغل=
Scope & operator=( const Scope & other )
حالة
Status status() const
~النطاق
~Scope()
وظائف ثابتة العامة
NewRootScope
Scope NewRootScope()
إرجاع نطاق جديد.
يؤدي هذا إلى إنشاء رسم بياني جديد ويجب أن تستخدم كافة العمليات التي تم إنشاؤها في هذا الرسم البياني الكائن الذي تم إرجاعه باعتباره النطاق "الجذر".
إنّ محتوى هذه الصفحة مرخّص بموجب ترخيص Creative Commons Attribution 4.0 ما لم يُنصّ على خلاف ذلك، ونماذج الرموز مرخّصة بموجب ترخيص Apache 2.0. للاطّلاع على التفاصيل، يُرجى مراجعة سياسات موقع Google Developers. إنّ Java هي علامة تجارية مسجَّلة لشركة Oracle و/أو شركائها التابعين.
تاريخ التعديل الأخير: 2024-11-24 (حسب التوقيت العالمي المتفَّق عليه)