เทนเซอร์โฟลว์:: ขอบเขต
#include <scope.h>
ออบเจ็กต์ Scope
แสดงถึงชุดของการดำเนินการ TensorFlow ที่เกี่ยวข้องซึ่งมีคุณสมบัติเหมือนกัน เช่น คำนำหน้าชื่อทั่วไป
สรุป
วัตถุ ขอบเขต คือคอนเทนเนอร์สำหรับคุณสมบัติ TensorFlow Op ตัวสร้าง Op ได้รับวัตถุ ขอบเขต เป็นอาร์กิวเมนต์แรกที่จำเป็นและตัวสร้าง 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()) { ... }
ลำดับชั้น ของขอบเขต :
คลาส ขอบเขต มีฟังก์ชัน With<> ต่างๆ ที่สร้างขอบเขตใหม่ โดยทั่วไปขอบเขตใหม่จะมีการเปลี่ยนแปลงคุณสมบัติหนึ่งในขณะที่คุณสมบัติอื่นๆ ได้รับการสืบทอดมาจากขอบเขตหลัก เมธอด NewSubScope(name) จะเพิ่ม name
ต่อท้ายชื่อสำหรับ ops ที่สร้างขึ้นภายในขอบเขต และ WithOpName() จะเปลี่ยนส่วนต่อท้ายซึ่งจะเป็นค่าเริ่มต้นเป็นประเภทของ ops
ตัวอย่างชื่อ:
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() ก่อนที่จะดำเนินการสร้าง op
ความปลอดภัยของด้าย:
วัตถุ 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 หากไม่ได้ระบุชื่อ op |
NewSubScope (const string & child_scope_name) const | กลับขอบเขตใหม่ |
ToGraphDef (GraphDef *gdef) const | Status หาก 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_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 | Status |
ฟังก์ชันคงที่สาธารณะ | |
---|---|
NewRootScope () | กลับขอบเขตใหม่ |
งานสาธารณะ
วางตำแหน่งด้วย
Scope ColocateWith( const Operation & op ) const
กลับขอบเขตใหม่
ปฏิบัติการทั้งหมดที่สร้างขึ้นภายในขอบเขตที่ส่งคืนจะถูกวางตำแหน่งร่วมบนอุปกรณ์ที่วาง op ไว้ หมายเหตุ: ฟังก์ชันนี้มีวัตถุประสงค์เพื่อใช้ไลบรารีภายในเพื่อควบคุมการวาง Ops บนอุปกรณ์เท่านั้น ไม่สนับสนุนการใช้งานสาธารณะเนื่องจากการดำเนินการจัดวางอุปกรณ์อาจมีการเปลี่ยนแปลง
ExitOnError
Scope ExitOnError() const
กลับขอบเขตใหม่
ฟังก์ชั่น op-constructor ที่ใช้ขอบเขตที่ส่งคืนเป็นอาร์กิวเมนต์ขอบเขตจะออกทันทีที่ตรวจพบข้อผิดพลาด แทนที่จะตั้งค่าสถานะบนขอบเขต
รับ CompositeOpScopes
CompositeOpScopes GetCompositeOpScopes( const string & composite_op_name ) const
รับ UniqueNameForOp
string GetUniqueNameForOp( const string & default_name ) const
ส่งคืนชื่อที่ไม่ซ้ำ โดยใช้ default_name หากไม่ได้ระบุชื่อ op
ใหม่SubScope
Scope NewSubScope( const string & child_scope_name ) const
กลับขอบเขตใหม่
Ops ที่สร้างขึ้นด้วยขอบเขตนี้จะมี name/child_scope_name
เป็นคำนำหน้า ชื่อจริงจะไม่ซ้ำกันในขอบเขตปัจจุบัน คุณสมบัติอื่นๆ ทั้งหมดสืบทอดมาจากขอบเขตปัจจุบัน หาก child_scope_name
ว่างเปล่า ระบบจะลบ /
ออกไป
ขอบเขต
Scope( const Scope & other )
ถึงกราฟDef
Status ToGraphDef( GraphDef *gdef ) const
ถ้า status() คือ Status::OK() ให้แปลงอ็อบเจ็กต์ Graph ที่จัดเก็บไว้ในขอบเขตนี้เป็น GraphDef proto และส่งคืน Status::OK()
มิฉะนั้น ให้ส่งคืนสถานะข้อผิดพลาดตามเดิมโดยไม่ต้องทำการแปลง GraphDef
อัปเดตสถานะ
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
กลับขอบเขตใหม่
การดำเนินการทั้งหมดที่สร้างขึ้นภายในขอบเขตที่ส่งคืนจะมีการพึ่งพาการควบคุมการรวมกันของการดำเนินการในเวกเตอร์ control_deps และการพึ่งพาการควบคุมของขอบเขตปัจจุบัน
ด้วยการควบคุมการพึ่งพา
Scope WithControlDependencies( const Output & control_dep ) const
เช่นเดียวกับข้างต้น แต่สะดวกในการเพิ่มการพึ่งพาการควบคุมในการดำเนินการที่สร้างเอาต์พุต control_dep
ด้วยอุปกรณ์
Scope WithDevice( const string & device ) const
กลับขอบเขตใหม่
การดำเนินการทั้งหมดที่สร้างขึ้นภายในขอบเขตที่ส่งคืนจะมีการตั้งค่าฟิลด์อุปกรณ์เป็น 'อุปกรณ์'
ด้วย KernelLabel
Scope WithKernelLabel( const string & kernel_label ) const
กลับขอบเขตใหม่
การดำเนินการทั้งหมดที่สร้างขึ้นด้วยขอบเขตใหม่จะมี kernel_label เป็นค่าสำหรับแอตทริบิวต์ '_kernel'
ไม่มีการพึ่งพาการควบคุม
Scope WithNoControlDependencies() const
กลับขอบเขตใหม่
การดำเนินการทั้งหมดที่สร้างขึ้นภายในขอบเขตที่ส่งคืนจะไม่มีการพึ่งพาการควบคุมในการดำเนินการอื่น
ด้วยOpName
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
สถานะ
Status status() const
~ขอบเขต
~Scope()
ฟังก์ชันคงที่สาธารณะ
ใหม่ RootScope
Scope NewRootScope()
กลับขอบเขตใหม่
สิ่งนี้จะสร้างกราฟใหม่และการดำเนินการทั้งหมดที่สร้างขึ้นในกราฟนี้ควรใช้ออบเจ็กต์ที่ส่งคืนเป็นขอบเขต "รูท"