dòng chảy :: Phạm vi
#include <scope.h>
Đối tượng Scope
đại diện cho một tập hợp các hoạt động TensorFlow liên quan có cùng thuộc tính, chẳng hạn như tiền tố tên chung.
Bản tóm tắt
Đối tượng Scope là một vùng chứa cho các thuộc tính TensorFlow Op. Các hàm tạo Op lấy một đối tượng Scope làm đối số đầu tiên bắt buộc và op được xây dựng nhận các thuộc tính trong đối tượng.
Một ví dụ đơn giản:
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()) { ... }
Phân cấp phạm vi :
Lớp Scope cung cấp các hàm With <> khác nhau để tạo một phạm vi mới. Phạm vi mới thường có một thuộc tính được thay đổi trong khi các thuộc tính khác được kế thừa từ phạm vi chính. Phương thức NewSubScope (name) gắn name
vào tiền tố của tên cho các hoạt động được tạo trong phạm vi và WithOpName () thay đổi hậu tố mà nếu không thì mặc định thành loại op.
Ví dụ về tên:
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"
Phạm vi tồn tại:
Một phạm vi mới được tạo bằng cách gọi Scope :: NewRootScope . Điều này tạo ra một số tài nguyên được chia sẻ bởi tất cả các phạm vi con kế thừa từ phạm vi này, trực tiếp hoặc chuyển tiếp. Ví dụ: một phạm vi mới tạo ra một đối tượng Đồ thị mới mà các phép toán được thêm vào khi phạm vi mới hoặc phạm vi con của nó được sử dụng bởi một phương thức khởi tạo Op. Phạm vi mới cũng có một đối tượng Trạng thái sẽ được sử dụng để chỉ ra lỗi bởi các hàm Op-constructor được gọi trên bất kỳ phạm vi con nào. Các hàm Op-constructor phải kiểm tra trạng thái của phạm vi bằng cách gọi phương thức ok () trước khi tiến hành xây dựng op.
An toàn chủ đề:
Đối tượng Scope
KHÔNG an toàn theo luồng. Các luồng không thể đồng thời gọi các hàm op-constructor trên cùng một đối tượng Scope
.
Người xây dựng và Người phá hủy | |
---|---|
Scope (const Scope & other) | |
~Scope () |
Chức năng công cộng | |
---|---|
ClearColocation () const | Xóa tất cả các ràng buộc về vị trí. |
ColocateWith (const Operation & op) const | Trả lại một phạm vi mới. |
ColocateWith (const Output & out) const | Chức năng tiện lợi cho bên trên. |
ExitOnError () const | Trả lại một phạm vi mới. |
GetCompositeOpScopes (const string & composite_op_name) const | |
GetUniqueNameForOp (const string & default_name) const | string Trả lại một tên duy nhất, sử dụng default_name nếu tên op chưa được chỉ định. |
NewSubScope (const string & child_scope_name) const | Trả lại một phạm vi mới. |
ToGraphDef (GraphDef *gdef) const | Nếu status () là Status :: OK (), hãy chuyển đổi đối tượng Graph được lưu trữ trong phạm vi này thành một proto GraphDef và trả về Status :: OK (). |
UpdateStatus (const Status s) const | void Cập nhật trạng thái trên phạm vi này. |
WithAssignedDevice (const string & assigned_device) const | Trả về một phạm vi mới. |
WithControlDependencies (const gtl::ArraySlice< Operation > & control_deps) const | Trả lại một phạm vi mới. |
WithControlDependencies (const Output & control_dep) const | Tương tự như trên, nhưng thuận tiện để thêm phụ thuộc điều khiển vào hoạt động tạo ra đầu ra control_dep. |
WithDevice (const string & device) const | Trả lại một phạm vi mới. |
WithKernelLabel (const string & kernel_label) const | Trả lại một phạm vi mới. |
WithNoControlDependencies () const | Trả lại một phạm vi mới. |
WithOpName (Ty... fragments) const | Trả lại một phạm vi mới. |
WithXlaCluster (const string & xla_cluster) const | Trả về một phạm vi mới. |
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 |
Các chức năng tĩnh công khai | |
---|---|
NewRootScope () | Trả lại một phạm vi mới. |
Chức năng công cộng
ColocateWith
Scope ColocateWith( const Operation & op ) const
Trả lại một phạm vi mới.
Tất cả các hoạt động được tạo trong phạm vi được trả về sẽ cùng nằm trên thiết bị nơi op được đặt. LƯU Ý: Chức năng này chỉ nhằm mục đích sử dụng các thư viện nội bộ để kiểm soát vị trí của các hoạt động trên các thiết bị. Việc sử dụng công cộng không được khuyến khích vì việc triển khai vị trí thiết bị có thể thay đổi.
ExitOnError
Scope ExitOnError() const
Trả lại một phạm vi mới.
Các hàm op-constructor lấy phạm vi trả về làm đối số phạm vi sẽ thoát ngay khi phát hiện lỗi, thay vì đặt trạng thái trên phạm vi.
GetCompositeOpScope
CompositeOpScopes GetCompositeOpScopes( const string & composite_op_name ) const
GetUniqueNameForOp
string GetUniqueNameForOp( const string & default_name ) const
Trả lại một tên duy nhất, sử dụng default_name nếu tên op chưa được chỉ định.
NewSubScope
Scope NewSubScope( const string & child_scope_name ) const
Trả lại một phạm vi mới.
Các hoạt động được tạo với phạm vi này sẽ có name/child_scope_name
làm tiền tố. Tên thực tế sẽ là duy nhất trong phạm vi hiện tại. Tất cả các thuộc tính khác được kế thừa từ phạm vi hiện tại. Nếu child_scope_name
trống, dấu /
được giải thích.
Phạm vi
Scope( const Scope & other )
ToGraphDef
Status ToGraphDef( GraphDef *gdef ) const
Nếu status () là Status :: OK (), hãy chuyển đổi đối tượng Graph được lưu trữ trong phạm vi này thành một proto GraphDef và trả về Status :: OK ().
Nếu không, trả về trạng thái lỗi như cũ mà không thực hiện chuyển đổi GraphDef.
Cập nhật trạng thái
void UpdateStatus( const Status s ) const
Cập nhật trạng thái trên phạm vi này.
Lưu ý: Đối tượng trạng thái được chia sẻ giữa tất cả các đối tượng con của phạm vi này. Nếu trạng thái kết quả không phải là Trạng thái :: OK () và exit_on_error_ được đặt trên phạm vi này, thì hàm này sẽ thoát bằng cách gọi LOG (FATAL).
WithAssignedDevice
Scope WithAssignedDevice( const string & assigned_device ) const
Trả về một phạm vi mới.
Tất cả các hoạt động được tạo trong phạm vi được trả về sẽ có thiết bị được chỉ định của chúng được đặt thành assigned_device
.
WithControlDependencies
Scope WithControlDependencies( const gtl::ArraySlice< Operation > & control_deps ) const
Trả lại một phạm vi mới.
Tất cả các hoạt động được tạo trong phạm vi được trả về sẽ có phụ thuộc điều khiển, sự kết hợp của các hoạt động trong vector control_deps và các phụ thuộc điều khiển của phạm vi hiện tại.
WithControlDependencies
Scope WithControlDependencies( const Output & control_dep ) const
Tương tự như trên, nhưng thuận tiện để thêm phụ thuộc điều khiển vào hoạt động tạo ra đầu ra control_dep.
WithDevice
Scope WithDevice( const string & device ) const
Trả lại một phạm vi mới.
Tất cả các hoạt động được tạo trong phạm vi trả về sẽ có trường thiết bị được đặt thành 'thiết bị'.
WithKernelLabel
Scope WithKernelLabel( const string & kernel_label ) const
Trả lại một phạm vi mới.
Tất cả các hoạt động được tạo với phạm vi mới sẽ có kernel_label làm giá trị cho thuộc tính '_kernel' của chúng;
WithNoControlDependencies
Scope WithNoControlDependencies() const
Trả lại một phạm vi mới.
Tất cả các hoạt động được tạo trong phạm vi trả về sẽ không có phụ thuộc kiểm soát vào các hoạt động khác.
WithOpName
Scope WithOpName( Ty... fragments ) const
Trả lại một phạm vi mới.
Tất cả các hoạt động được tạo trong phạm vi trả về sẽ có tên của biểu mẫu name/StrCat(fragments...)[_suffix]
WithXlaCluster
Scope WithXlaCluster( const string & xla_cluster ) const
Trả về một phạm vi mới.
Tất cả các hoạt động được tạo trong phạm vi được trả về sẽ có thuộc tính _XlaCluster của chúng được đặt thành xla_cluster
.
control_deps
const std::vector< Operation > & control_deps() const
đồ thị
Graph * graph() const
graph_as_shared_ptr
std::shared_ptr< Graph > graph_as_shared_ptr() const
Vâng
bool ok() const
trạng thái
Status status() const
~ Phạm vi
~Scope()
Các chức năng tĩnh công khai
NewRootScope
Scope NewRootScope()
Trả lại một phạm vi mới.
Điều này tạo ra một đồ thị mới và tất cả các hoạt động được xây dựng trong đồ thị này nên sử dụng đối tượng trả về làm phạm vi "gốc".