نشكرك على متابعة Google I / O. عرض جميع الجلسات عند الطلب مشاهدة عند الطلب

تينسورفلو :: نِطَاق

#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)
status () const

وظائف ثابتة عامة

NewRootScope ()
قم بإرجاع نطاق جديد.

الوظائف العامة

ClearColocation

Scope ClearColocation() const 

مسح كافة قيود الموقع المشترك.

كولوكيت مع

Scope ColocateWith(
  const Operation & op
) const 

قم بإرجاع نطاق جديد.

سيتم وضع جميع العمليات التي تم إنشاؤها داخل النطاق الذي تم إرجاعه في نفس الموقع على الجهاز حيث يتم وضع المرجع. ملاحظة: الغرض من هذه الوظيفة هو استخدام المكتبات الداخلية فقط للتحكم في وضع العمليات على الأجهزة. لا يتم تشجيع الاستخدام العام لأن وضع الجهاز عرضة للتغيير.

كولوكيت مع

Scope ColocateWith(
  const Output & out
) 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()

قم بإرجاع نطاق جديد.

يؤدي هذا إلى إنشاء رسم بياني جديد ويجب أن تستخدم جميع العمليات التي تم إنشاؤها في هذا الرسم البياني الكائن الذي تم إرجاعه كنطاق "جذر".