टेन्सरफ्लो::स्कोप

#include <scope.h>

एक Scope ऑब्जेक्ट संबंधित टेन्सरफ्लो ऑप्स के एक सेट को दर्शाता है जिनमें समान गुण होते हैं, जैसे कि एक सामान्य नाम उपसर्ग।

सारांश

स्कोप ऑब्जेक्ट, टेन्सरफ्लो ऑप प्रॉपर्टीज़ के लिए एक कंटेनर है। ऑप कंस्ट्रक्टर को अनिवार्य रूप से पहले आर्गुमेंट के रूप में एक स्कोप ऑब्जेक्ट मिलता है और निर्मित ऑप ऑब्जेक्ट में मौजूद प्रॉपर्टीज़ को प्राप्त कर लेता है।

एक सरल उदाहरण:

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 फ़ंक्शन को कॉल करके एक नया स्कोप बनाया जाता है। इससे कुछ संसाधन बनते हैं जो इस स्कोप से सीधे या अप्रत्यक्ष रूप से इनहेरिट करने वाले सभी चाइल्ड स्कोप द्वारा साझा किए जाते हैं। उदाहरण के लिए, एक नया स्कोप एक नया ग्राफ़ ऑब्जेक्ट बनाता है जिसमें ऑपरेशन तब जोड़े जाते हैं जब नए स्कोप या उसके चाइल्ड स्कोप का उपयोग किसी ऑप कंस्ट्रक्टर द्वारा किया जाता है। नए स्कोप में एक स्टेटस ऑब्जेक्ट भी होता है जिसका उपयोग किसी भी चाइल्ड स्कोप पर कॉल किए गए ऑप-कंस्ट्रक्टर फ़ंक्शन द्वारा त्रुटियों को इंगित करने के लिए किया जाएगा। ऑप-कंस्ट्रक्टर फ़ंक्शन को ऑपरेशन बनाने से पहले ok() मेथड को कॉल करके स्कोप की स्थिति की जांच करनी होती है।

धागे की सुरक्षा:

Scope ऑब्जेक्ट थ्रेड-सेफ नहीं है। थ्रेड एक ही Scope ऑब्जेक्ट पर एक साथ op-constructor फ़ंक्शन को कॉल नहीं कर सकते।

कंस्ट्रक्टर और डिस्ट्रक्टर

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
ऊपर जैसा ही, लेकिन कंट्रोल_डिप आउटपुट उत्पन्न करने वाले ऑपरेशन पर कंट्रोल डिपेंडेंसी जोड़ना सुविधाजनक है।
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 ()
एक नया स्कोप लौटाएँ।

सार्वजनिक समारोह

क्लियरकोलोकेशन

Scope ClearColocation() const 

सभी सह-स्थान संबंधी बाधाओं को दूर करें।

साथ में स्थित करें

Scope ColocateWith(
  const Operation & op
) const 

एक नया स्कोप लौटाएँ।

रिटर्न किए गए स्कोप के भीतर बनाए गए सभी ऑपरेशन उसी डिवाइस पर स्थित होंगे जहां ऑपरेशन रखा गया है। नोट: यह फ़ंक्शन केवल आंतरिक लाइब्रेरी में ऑपरेशन को डिवाइस पर रखने के नियंत्रण के लिए है। सार्वजनिक उपयोग की सलाह नहीं दी जाती है क्योंकि डिवाइस प्लेसमेंट का कार्यान्वयन परिवर्तन के अधीन है।

साथ में स्थित करें

Scope ColocateWith(
  const Output & out
) const 

उपरोक्त के लिए सुविधा फ़ंक्शन।

ExitOnError

Scope ExitOnError() const 

एक नया स्कोप लौटाएँ।

ऑप-कंस्ट्रक्टर फ़ंक्शन जो लौटाए गए स्कोप को स्कोप तर्क के रूप में लेते हैं, त्रुटि का पता चलते ही स्कोप पर स्थिति सेट करने के बजाय बाहर निकल जाएंगे।

गेट कम्पोजिट ऑपस्कोप्स

CompositeOpScopes GetCompositeOpScopes(
  const string & composite_op_name
) const 

GetUniqueNameForOp

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() का मान Status::OK() है, तो इस स्कोप में संग्रहीत Graph ऑब्जेक्ट को GraphDef प्रोटो में परिवर्तित करें और Status::OK() लौटाएँ।

अन्यथा, ग्राफ़डेफ़ रूपांतरण किए बिना त्रुटि स्थिति को यथावत लौटा दें।

अद्यतन स्थिति

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 

एक नया स्कोप लौटाएँ।

लौटाए गए स्कोप के भीतर बनाए गए सभी ऑपरेशंस में कंट्रोल डिपेंडेंसी के रूप में कंट्रोल_डिप्स वेक्टर में ऑपरेशंस का यूनियन और वर्तमान स्कोप की कंट्रोल डिपेंडेंसी होगी।

नियंत्रण निर्भरताओं के साथ

Scope WithControlDependencies(
  const Output & control_dep
) const 

ऊपर जैसा ही, लेकिन कंट्रोल_डिप आउटपुट उत्पन्न करने वाले ऑपरेशन पर कंट्रोल डिपेंडेंसी जोड़ना सुविधाजनक है।

डिवाइस के साथ

Scope WithDevice(
  const string & device
) const 

एक नया स्कोप लौटाएँ।

रिटर्न किए गए स्कोप के भीतर बनाए गए सभी ऑपरेशंस में डिवाइस फ़ील्ड को 'डिवाइस' पर सेट किया जाएगा।

विदकर्नेललेबल

Scope WithKernelLabel(
  const string & kernel_label
) const 

एक नया स्कोप लौटाएँ।

नए स्कोप के साथ बनाए गए सभी ऑपरेशंस में उनके '_kernel' एट्रिब्यूट के लिए kernel_label मान होगा;

WithNoControlDependencies

Scope WithNoControlDependencies() const 

एक नया स्कोप लौटाएँ।

रिटर्न किए गए स्कोप के भीतर बनाए गए सभी ऑपरेशंस की अन्य ऑपरेशंस पर कोई नियंत्रण निर्भरता नहीं होगी।

WithOpName

Scope WithOpName(
  Ty... fragments
) const 

एक नया स्कोप लौटाएँ।

रिटर्न किए गए स्कोप के भीतर बनाए गए सभी ऑपरेशंस के नाम name/StrCat(fragments...)[_suffix] प्रारूप के होंगे।

विदएक्सएलएक्लस्टर

Scope WithXlaCluster(
  const string & xla_cluster
) const 

एक नया स्कोप लौटाता है।

लौटाए गए स्कोप के भीतर बनाए गए सभी ऑपरेशंस के _XlaCluster एट्रिब्यूट को xla_cluster पर सेट किया जाएगा।

नियंत्रण_डिप्स

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()

सार्वजनिक स्थैतिक फ़ंक्शन

न्यूरूटस्कोप

Scope NewRootScope()

एक नया स्कोप लौटाएँ।

इससे एक नया ग्राफ बनता है और इस ग्राफ में निर्मित सभी ऑपरेशनों को लौटाए गए ऑब्जेक्ट को "रूट" स्कोप के रूप में उपयोग करना चाहिए।