tensorflow:: תְחוּם

#include <scope.h>

אובייקט Scope מייצג קבוצה של TensorFlow פעולות קשורות שיש להם את אותם מאפיינים כמו קידומת שם נפוץ.

סיכום

אובייקט Scope הוא מיכל למאפייני TensorFlow Op. בנאי אופ מקבלים אובייקט 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 לקידומת של שמות עבור ops שנוצרו בתוך ה-scope, ו- WithOpName() משנה את הסיומת שאחרת כברירת מחדל לסוג ה-op.

דוגמאות לשמות:

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 חדש שאליו מתווספות פעולות כאשר ה-scope החדש או הילדים שלו נמצאים בשימוש על ידי בנאי Op. ל-scope החדש יש גם אובייקט Status אשר ישמש לציון שגיאות על-ידי פונקציות Op-constructor הנקראות בכל טווח ילד. פונקציות ה-Op-constructor צריכות לבדוק את מצב ה-scope על ידי קריאה למתודה ok() לפני המשך בניית ה-op.

בטיחות חוטים:

אובייקט Scope אינו בטוח לחוט. שרשורים אינם יכולים לקרוא בו-זמנית לפונקציות בונה אופ על אותו אובייקט Scope .

בנאים והורסים

Scope (const Scope & other)
~Scope ()

תפקידים ציבוריים

ClearColocation () const
נקה את כל אילוצי ה-colocation.
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)
status () const

פונקציות סטטיות ציבוריות

NewRootScope ()
החזר היקף חדש.

תפקידים ציבוריים

ClearColocation

Scope ClearColocation() const 

נקה את כל אילוצי ה-colocation.

ColocateWith

Scope ColocateWith(
  const Operation & op
) const 

החזר היקף חדש.

כל המבצעים שנוצרו בטווח המוחזר ימוקמו במשותף במכשיר שבו ממוקמת האופ. הערה: פונקציה זו מיועדת לשימוש בספריות פנימיות רק לשליטה במיקום של פעולות במכשירים. השימוש הציבורי אינו מעודד מכיוון שהיישום של מיקום המכשיר נתון לשינויים.

ColocateWith

Scope ColocateWith(
  const Output & out
) const 

פונקציית נוחות לעיל.

ExitOnError

Scope ExitOnError() const 

החזר היקף חדש.

פונקציות ה-op-constructor לוקחות את ה-scope שהוחזר כארגומנט ה-scope ייצאו ברגע שתזוהה שגיאה, במקום להגדיר את המצב ב-scope.

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 

החזר היקף חדש.

אופציות שנוצרו עם scope זה יהיו עם 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).

WithAssignedDevice

Scope WithAssignedDevice(
  const string & assigned_device
) const 

מחזירה היקף חדש.

כל המבצעים שנוצרו בטווח המוחזר יוגדרו להתקן שהוקצה להם ל- assigned_device .

WithControlDependencies

Scope WithControlDependencies(
  const gtl::ArraySlice< Operation > & control_deps
) const 

החזר היקף חדש.

לכל האופציות שנוצרו במסגרת ה-scope המוחזר יהיו כתלות בקרה את איחוד הפעולות בווקטור control_deps ואת תלות הבקרה של ה-scope הנוכחי.

WithControlDependencies

Scope WithControlDependencies(
  const Output & control_dep
) const 

זהה לעיל, אבל נוח להוסיף תלות בקרה בפעולה המפיקה את הפלט control_dep.

WithDevice

Scope WithDevice(
  const string & device
) const 

החזר היקף חדש.

כל המבצעים שנוצרו בטווח המוחזר יוגדרו בשדה ההתקן ל-'device'.

WithKernelLabel

Scope WithKernelLabel(
  const string & kernel_label
) const 

החזר היקף חדש.

כל האופציות שנוצרו עם ה-scope החדש יהיו עם 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 

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

החזר היקף חדש.

זה יוצר גרף חדש וכל הפעולות שנבנות בגרף זה צריכות להשתמש באובייקט המוחזר בתור היקף ה"שורש".