تينسورفلو :: نِطَاق
#include <scope.h>
يمثل كائن Scope
مجموعة من عمليات TensorFlow ذات الصلة والتي لها نفس الخصائص مثل بادئة الاسم الشائع.
ملخص
كائن النطاق عبارة عن حاوية لخصائص 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()) { ... }
التسلسل الهرمي للنطاق :
توفر فئة النطاق وظائف بـ <> متنوعة تنشئ نطاقًا جديدًا. النطاق الجديد عادة به خاصية واحدة تم تغييرها بينما يتم توريث الخصائص الأخرى من النطاق الرئيسي. تقوم طريقة NewSubScope (الاسم) بإلحاق 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. يحتوي النطاق الجديد أيضًا على كائن الحالة الذي سيتم استخدامه للإشارة إلى الأخطاء بواسطة وظائف Op-constructor التي يتم استدعاؤها في أي نطاق فرعي. يجب أن تتحقق وظائف Op-constructor من حالة النطاق عن طريق استدعاء طريقة 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 وقم بإرجاع الحالة :: موافق (). |
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
قم بإرجاع نطاق جديد.
سيتم وضع جميع العمليات التي تم إنشاؤها داخل النطاق الذي تم إرجاعه في نفس الموقع على الجهاز حيث يتم وضع المرجع. ملاحظة: الغرض من هذه الوظيفة هو استخدام المكتبات الداخلية فقط للتحكم في وضع العمليات على الأجهزة. لا يتم تشجيع الاستخدام العام لأن وضع الجهاز عرضة للتغيير.
ExitOnError
Scope ExitOnError() const
قم بإرجاع نطاق جديد.
دوال op-constructor تأخذ النطاق الذي تم إرجاعه حيث سيتم إنهاء وسيطة النطاق بمجرد اكتشاف خطأ ، بدلاً من تعيين الحالة في النطاق.
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 :: OK () ، قم بتحويل كائن Graph المخزن في هذا النطاق إلى رسم أولي لـ GraphDef وقم بإرجاع الحالة :: موافق ().
وإلا ، قم بإرجاع حالة الخطأ كما هي بدون إجراء تحويل GraphDef.
تحديث الحالة
void UpdateStatus( const Status & s ) const
تحديث الحالة في هذا النطاق.
ملاحظة: يتم مشاركة كائن الحالة بين جميع العناصر التابعة لهذا النطاق. إذا كانت الحالة الناتجة ليست الحالة :: موافق () وتم تعيين exit_on_error_ على هذا النطاق ، يتم إنهاء هذه الوظيفة عن طريق استدعاء LOG (FATAL).
WithAssignedDevice
Scope WithAssignedDevice( const string & assigned_device ) const
إرجاع نطاق جديد.
جميع العمليات التي تم إنشاؤها داخل النطاق الذي تم إرجاعه سيتم تعيين الجهاز المخصص لها على الجهاز assigned_device
.
WithControlDependencies
Scope WithControlDependencies( const gtl::ArraySlice< Operation > & control_deps ) const
قم بإرجاع نطاق جديد.
جميع العمليات التي تم إنشاؤها داخل النطاق الذي تم إرجاعه سيكون لها تبعيات تحكم اتحاد العمليات في ناقل control_deps وتبعيات التحكم في النطاق الحالي.
WithControlDependencies
Scope WithControlDependencies( const Output & control_dep ) const
كما هو مذكور أعلاه ، لكن من الملائم إضافة تبعية تحكم إلى العملية التي تنتج إخراج control_dep.
مع الجهاز
Scope WithDevice( const string & device ) const
قم بإرجاع نطاق جديد.
سيتم تعيين حقل الجهاز على "الجهاز" في جميع العمليات التي تم إنشاؤها داخل النطاق الذي تم إرجاعه.
WithKernelLabel
Scope WithKernelLabel( const string & kernel_label ) const
قم بإرجاع نطاق جديد.
جميع العمليات التي تم إنشاؤها باستخدام النطاق الجديد سيكون لها kernel_label كقيمة لسمة '_kernel' الخاصة بهم ؛
WithNoControlDependencies
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
الرسم البياني _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 و/أو شركائها التابعين.
تاريخ التعديل الأخير: 2022-08-30 (حسب التوقيت العالمي المتفَّق عليه)