tensorflow:: Scope

#include <scope.h>

Đối tượng Scope đại diện cho một tập hợp các phép toán TensorFlow có liên quan, có cùng các thuộc tính như tiền tố tên chung.

Bản tóm tắt

Đối tượng Scope là một vùng chứa các thuộc tính của TensorFlow Op. Hàm tạo của Op nhận một đối tượng Scope làm đối số đầu tiên bắt buộc và Op được tạo sẽ kế thừa 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()) { ... }

Thứ tự phân cấp phạm vi:

Lớp Scope cung cấp nhiều hàm With<> để 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 cha. Phương thức NewSubScope(name) thêm name vào tiền tố của tên các op được tạo trong phạm vi, và WithOpName() thay đổi hậu tố, nếu không thì hậu tố sẽ mặc định là kiểu 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"

Thời gian sử dụng :

Một phạm vi mới được tạo bằng cách gọi Scope::NewRootScope . Thao tác 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 gián tiếp. Ví dụ, một phạm vi mới tạo ra một đối tượng Graph mới mà các thao tác sẽ được thêm vào khi phạm vi mới hoặc các phạm vi con của nó được sử dụng bởi một hàm tạo Op. Phạm vi mới cũng có một đối tượng Status sẽ được sử dụng để chỉ ra lỗi bởi các hàm tạo Op được gọi trên bất kỳ phạm vi con nào. Các hàm tạo Op 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ếp tục tạo Op.

An toàn chủ đề:

Đối tượng Scope KHÔNG an toàn cho đa luồng. Các luồng không thể gọi đồng thời các hàm khởi tạo op trên cùng một đối tượng Scope .

Hàm khởi tạo và hàm hủy

Scope (const Scope & other)
~Scope ()

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

ClearColocation () const
Xóa bỏ tất cả các ràng buộc về vị trí đặt máy chủ.
ColocateWith (const Operation & op) const
Trả về một phạm vi mới.
ColocateWith (const Output & out) const
Chức năng tiện ích cho phần trên.
ExitOnError () const
Trả về 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ả về một phạm vi mới.
ToGraphDef (GraphDef *gdef) const
Status
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 của 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ả về một phạm vi mới.
WithControlDependencies (const Output & control_dep) const
Tương tự như trên, nhưng tiện hơn khi thêm sự phụ thuộc điều khiển vào thao tác tạo ra đầu ra control_dep.
WithDevice (const string & device) const
Trả về một phạm vi mới.
WithKernelLabel (const string & kernel_label) const
Trả về một phạm vi mới.
WithNoControlDependencies () const
Trả về một phạm vi mới.
WithOpName (Ty... fragments) const
Trả về 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
Status

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

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

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

ClearColocation

Scope ClearColocation() const 

Xóa bỏ tất cả các ràng buộc về vị trí đặt máy chủ.

ColocateWith

Scope ColocateWith(
  const Operation & op
) const 

Trả về một phạm vi mới.

Tất cả các thao tác được tạo trong phạm vi trả về sẽ được đặt cùng vị trí trên thiết bị nơi thao tác đó được đặt. LƯU Ý: Chức năng này chỉ dành cho việc sử dụng các thư viện nội bộ để kiểm soát vị trí đặt các thao tác trên thiết bị. Việc sử dụng công khai không được khuyến khích vì cách thức triển khai vị trí thiết bị có thể thay đổi.

ColocateWith

Scope ColocateWith(
  const Output & out
) const 

Chức năng tiện ích cho phần trên.

Thoát khi xảy ra lỗi

Scope ExitOnError() const 

Trả về một phạm vi mới.

Các hàm khởi tạo op nhận 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ì thiết lập trạng thái trên phạm vi đó.

GetCompositeOpScopes

CompositeOpScopes GetCompositeOpScopes(
  const string & composite_op_name
) const 

Lấy tên duy nhất cho Opp

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 con mới

Scope NewSubScope(
  const string & child_scope_name
) const 

Trả về một phạm vi mới.

Các thao tác được tạo với phạm vi này sẽ có tiền tố là name/child_scope_name . 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 / sẽ bị lược bỏ.

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

Ngược lại, hãy trả về trạng thái lỗi như hiện 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 của phạm vi này.

Lưu ý: Đối tượng trạng thái được chia sẻ giữa tất cả các phần tử con của 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, 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 thao tác được tạo trong phạm vi trả về sẽ có thiết bị được gán được đặt thành assigned_device .

Với các phụ thuộc điều khiển

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

Trả về một phạm vi mới.

Tất cả các thao tác được tạo trong phạm vi trả về sẽ có các phụ thuộc điều khiển là sự kết hợp của các thao tác trong vectơ control_deps và các phụ thuộc điều khiển của phạm vi hiện tại.

Với các phụ thuộc điều khiển

Scope WithControlDependencies(
  const Output & control_dep
) const 

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

Với thiết bị

Scope WithDevice(
  const string & device
) const 

Trả về một phạm vi mới.

Tất cả các thao tác được tạo trong phạm vi trả về sẽ có trường thiết bị được đặt thành 'device'.

Với nhãn hạt nhân

Scope WithKernelLabel(
  const string & kernel_label
) const 

Trả về một phạm vi mới.

Tất cả các thao tác được tạo bằng 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ó sự phụ thuộc kiểm soát

Scope WithNoControlDependencies() const 

Trả về một phạm vi mới.

Tất cả các thao tác được tạo trong phạm vi trả về sẽ không có sự phụ thuộc điều khiển vào các thao tác khác.

Với tên Op

Scope WithOpName(
  Ty... fragments
) const 

Trả về một phạm vi mới.

Tất cả các thao tác được tạo trong phạm vi trả về sẽ có tên dạng name/StrCat(fragments...)[_suffix]

Với XlaCluster

Scope WithXlaCluster(
  const string & xla_cluster
) const 

Trả về một phạm vi mới.

Tất cả các thao tác đượ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ị dưới dạng con trỏ chia sẻ

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

NewRootScope

Scope NewRootScope()

Trả về một phạm vi mới.

Thao tác 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 được trả về làm phạm vi "gốc".