זרימת טנזור:: היקף

#include <scope.h>

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

תַקצִיר

אובייקט Scope הוא מכל עבור מאפייני 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()) { ... }

היררכיית היקף :

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

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

אובייקט Scope אינו בטוח בפני threads. Threads אינם יכולים לקרוא בו זמנית לפונקציות של בנאי op על אותו אובייקט 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() הוא 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 לפעולה שמייצרת את הפלט 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 ()
החזר היקף חדש.

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

קליר קולוקציה

Scope ClearColocation() const 

נקה את כל מגבלות המיקום המשותף.

מיקום עם

Scope ColocateWith(
  const Operation & op
) const 

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

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

מיקום עם

Scope ColocateWith(
  const Output & out
) const 

פונקציית נוחות עבור הנ"ל.

יציאהבשגיאה

Scope ExitOnError() const 

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

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

GetCompositeOpScopes

CompositeOpScopes GetCompositeOpScopes(
  const string & composite_op_name
) const 

קבל שם ייחודי עבור פעולה

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

אחרת, יש להחזיר את סטטוס השגיאה כפי שהוא מבלי לבצע המרת GraphDef.

סטטוס עדכון

void UpdateStatus(
  const Status s
) const 

עדכון הסטטוס בהיקף זה.

הערה: אובייקט ה-status משותף לכל הילדים של תחום זה. אם ה-status המתקבל אינו 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 לפעולה שמייצרת את הפלט control_dep.

עם התקן

Scope WithDevice(
  const string & device
) const 

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

כל הפעולות שנוצרו בתוך ההיקף המוחזר כוללות את שדה המכשיר המוגדר כ-'device'.

עם תווית ליבה

Scope WithKernelLabel(
  const string & kernel_label
) const 

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

כל הפעולות שנוצרו עם הסקופ החדש יקבלו את הערך kernel_label עבור התכונה '_kernel' שלהם;

תלויות ללא שליטה

Scope WithNoControlDependencies() const 

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

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

עם שם פעולה

Scope WithOpName(
  Ty... fragments
) const 

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

כל הפעולות שנוצרו בתוך התחום המוחזר יהיו בעלות שמות בצורה name/StrCat(fragments...)[_suffix]

עם אשכולXla

Scope WithXlaCluster(
  const string & xla_cluster
) const 

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

כל הפעולות שנוצרו בתוך ההיקף המוחזר יקבלו את התכונה _XlaCluster שלהן מוגדרת ל- xla_cluster .

control_deps

const std::vector< Operation > & control_deps() const 

גרָף

Graph * graph() const 

גרף_כפי_שתוף_ptr

std::shared_ptr< Graph > graph_as_shared_ptr() const 

בְּסֵדֶר

bool ok() const 

אופרטור=

Scope & operator=(
  const Scope & other
)

סטָטוּס

Status status() const 

~היקף

 ~Scope()

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

ניורוטסקופ

Scope NewRootScope()

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

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