dòng chảy căng:: 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 có 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 Phạm vi là nơi chứa các thuộc tính TensorFlow Op. Các hàm tạo Op lấy đối tượng Phạm vi làm đối số đầu tiên bắt buộc và op được xây dựng sẽ thu được 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 nhiều hàm With<> khác nhau để tạo ra 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) nối name vào tiền tố tên của các op được tạo trong phạm vi và WithOpName() thay đổi hậu tố mà mặt khác sẽ mặc định thành loại của 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 tuổi thọ:

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 một đối tượng Biểu đồ mới mà các hoạt động sẽ được thêm vào khi phạm vi mới hoặc các phần tử con của nó được hàm tạo Op sử dụng. 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 do 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 cho luồng. Các luồng không thể gọi đồng thời các hàm op-constructor trên cùng một đối tượng Scope .

Hàm tạo và hàm 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 colocation.
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 ở 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ả về 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 nguyên mẫu 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 khi thêm phần 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)
status () const

Các hàm tĩnh công khai

NewRootScope ()
Trả lại một phạm vi mới.

Chức năng công cộng

Rõ ràngColocation

Scope ClearColocation() const 

Xóa tất cả các ràng buộc colocation.

Cùng định vị với

Scope ColocateWith(
  const Operation & op
) const 

Trả lại một phạm vi mới.

Tất cả các op được tạo trong phạm vi trả về sẽ được đặt cùng vị trí trên thiết bị nơi đặt op. 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 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í đặt thiết bị có thể thay đổi.

Cùng định vị với

Scope ColocateWith(
  const Output & out
) const 

Chức năng tiện lợi ở trên.

Thoát trênLỗi

Scope ExitOnError() const 

Trả lại một phạm vi mới.

Các hàm op-constructor lấy phạm vi được trả về làm đối số phạm vi sẽ thoát ngay khi phát hiện thấy lỗi, thay vì đặt trạng thái trên phạm vi.

GetCompositeOpScopes

CompositeOpScopes GetCompositeOpScopes(
  const string & composite_op_name
) const 

GetUniqueNameForOp

string GetUniqueNameForOp(
  const string & default_name
) const 

Trả về một tên duy nhất, sử dụng default_name nếu tên op chưa được chỉ định.

Phạm vi phụ mới

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 thì / sẽ bị bỏ qua.

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 nguyên mẫu GraphDef và trả về Status::OK().

Nếu không, hãy trả về trạng thái lỗi như cũ mà không thực hiện chuyển đổi GraphDef.

Cập nhậtTrạ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ả trẻ em trong phạm vi này. Nếu trạng thái kết quả không phải là Status::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).

Với thiết bị được chỉ định

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 trả về sẽ có thiết bị được chỉ định được đặt thành assigned_device .

VớiĐiều khiểnPhụ thuộc

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ó các phần phụ thuộc điều khiển là sự kết hợp của các hoạt động trong vectơ control_deps và các phần phụ thuộc điều khiển của phạm vi hiện tại.

VớiĐiều khiểnPhụ thuộc

Scope WithControlDependencies(
  const Output & control_dep
) const 

Tương tự như trên, nhưng thuận tiện khi thêm phần phụ thuộc điều khiển vào hoạt động tạo ra đầu ra control_dep.

Với thiết bị

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ị'.

VớiNhãn hạt nhân

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;

Không có điều khiển phụ thuộc

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ó sự phụ thuộc kiểm soát vào các hoạt động khác.

VớiOpName

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 được trả về sẽ có tên dạng name/StrCat(fragments...)[_suffix]

VớiXlaCụm

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 trả về sẽ có thuộc tính _XlaCluster được đặt thành xla_cluster .

control_deps

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

đồ thị

Graph * graph() const 

đồ thị_as_shared_ptr

std::shared_ptr< Graph > graph_as_shared_ptr() const 

Được rồi

bool ok() const 

toán tử=

Scope & operator=(
  const Scope & other
)

trạng thái

Status status() const 

~Phạm vi

 ~Scope()

Các hàm tĩnh công khai

Phạm vi gốc mới

Scope NewRootScope()

Trả lại một phạm vi mới.

Điều này tạo ra một biểu đồ mới và tất cả các hoạt động được xây dựng trong biểu đồ này sẽ sử dụng đối tượng được trả về làm phạm vi "gốc".