Quản lý các nhóm thuộc tính liên quan khi tạo Hoạt động Tensorflow, chẳng hạn như tiền tố tên chung.
Scope
là nơi chứa các thuộc tính chung được áp dụng cho TensorFlow Ops. Mã người dùng thông thường khởi tạo Scope
và cung cấp nó cho các lớp xây dựng Hoạt động. Ví dụ:
Scope scope = new Scope(graph);
Constant c = Constant.create(scope, 42);
Lớp xây dựng Hoạt động có được Phạm vi và sử dụng phạm vi đó để đặt các thuộc tính trên các hoạt động Tensorflow cơ bản. Ví dụ:
// An operator class that adds a constant.
public class Constant {
public static Constant create(Scope scope, ...) {
scope.graph().opBuilder(
"Const", scope.makeOpName("Const"))
.setAttr(...)
.build()
...
}
}
Phân cấp phạm vi:
Scope
cung cấp nhiều phương thức 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.
Một ví dụ sử dụng Constant
được triển khai như trước:
Scope root = new Scope(graph);
// The linear subscope will generate names like linear/...
Scope linear = Scope.withSubScope("linear");
// This op name will be "linear/W"
Constant.create(linear.withName("W"), ...);
// This op will be "linear/Const", using the default
// name provided by Constant
Constant.create(linear, ...);
// This op will be "linear/Const_1", using the default
// name provided by Constant and making it unique within
// this scope
Constant.create(linear, ...);
Các đối tượng phạm vi không an toàn theo luồng.
Nhà xây dựng công cộng
Phương pháp công khai
OperationBuilder | áp dụng (trình tạo OperationBuilder ) Áp dụng đặc tả thiết bị và thêm từng Toán hạng trong controlDependency làm đầu vào điều khiển cho trình tạo được cung cấp. |
OperationBuilder | applyControlDependency (trình tạo OperationBuilder ) Thêm từng Toán hạng trong controlDependency làm đầu vào điều khiển cho trình tạo được cung cấp. |
Thực thiMôi trường | env () Trả về môi trường thực thi được phạm vi này sử dụng. |
Sợi dây | getDeviceString () Trả về chuỗi thiết bị từ phạm vi. |
Sợi dây | makeOpName (Tên mặc định chuỗi) Tạo tên duy nhất cho toán tử, sử dụng tên mặc định được cung cấp nếu cần. |
Phạm vi | withControlDependency (Điều khiển có thể lặp lại < Op >) Trả về một phạm vi mới trong đó các hoạt động được thêm vào sẽ có các phần phụ thuộc điều khiển được cung cấp. |
Phạm vi | withDevice ( DeviceSpec deviceSpec) Trả về một phạm vi mới sử dụng thông số kỹ thuật của thiết bị được cung cấp cho một op. |
Phạm vi | withName (Chuỗi opName) Trả về một phạm vi mới sử dụng tên được cung cấp cho một op. |
Phạm vi | withNameAsSubScope (Tên mặc định chuỗi) Trả về một phạm vi mới trong đó các hoạt động được thêm vào sẽ có tiền tố là tên op của phạm vi này (được đặt bởi withName(String) ) hoặc mặc định đã cho nếu nó không được đặt. |
Phạm vi | withSubScope (Chuỗi childScopeName) Trả về một phạm vi mới trong đó các hoạt động được thêm vào sẽ có tiền tố tên được cung cấp. |
Phương pháp kế thừa
Nhà xây dựng công cộng
Phạm vi công cộng ( ExecutionEnvironment env)
Tạo một phạm vi cấp cao nhất mới.
Thông số
env | Môi trường thực thi được phạm vi sử dụng. |
---|
Phương pháp công khai
Áp dụng OperationBuilder công khai (Trình xây dựng OperationBuilder )
Áp dụng đặc tả thiết bị và thêm từng Toán hạng trong controlDependency làm đầu vào điều khiển cho trình tạo được cung cấp.
Thông số
người xây dựng | OperationBuilder để thêm đầu vào điều khiển và thông số kỹ thuật của thiết bị vào |
---|
công khai OperationBuilder áp dụngControlDependency (trình tạo OperationBuilder )
Thêm từng Toán hạng trong controlDependency làm đầu vào điều khiển cho trình tạo được cung cấp.
Thông số
người xây dựng | OperationBuilder để thêm đầu vào điều khiển vào |
---|
Chuỗi công khai getDeviceString ()
Trả về chuỗi thiết bị từ phạm vi.
Chuỗi công khai makeOpName (Tên mặc định chuỗi)
Tạo tên duy nhất cho toán tử, sử dụng tên mặc định được cung cấp nếu cần.
Điều này thường chỉ được gọi bởi các lớp xây dựng toán tử.
Phương thức này tạo ra một tên duy nhất, phù hợp với phạm vi tên được kiểm soát bởi phiên bản này. Mã xây dựng toán tử điển hình có thể trông giống như
scope.env().opBuilder("Const", scope.makeOpName("Const"))...
Lưu ý: nếu bạn cung cấp một lớp xây dựng toán tử tổng hợp (tức là một lớp tạo ra một tập hợp các phép toán liên quan bằng cách gọi mã xây dựng toán tử khác), thì tên được cung cấp sẽ đóng vai trò như một phạm vi con cho tất cả các toán tử cơ bản.
Thông số
tên mặc định | tên cho toán tử cơ bản. |
---|
Trả lại
- tên duy nhất cho người vận hành.
Ném
Đối số bất hợp phápNgoại lệ | nếu tên mặc định không hợp lệ. |
---|
Phạm vi công khai vớiControlDependency (điều khiển Iterable< Op >)
Trả về một phạm vi mới trong đó các hoạt động được thêm vào sẽ có các phần phụ thuộc điều khiển được cung cấp.
Các hoạt động được tạo bằng phạm vi này sẽ có cạnh điều khiển từ mỗi điều khiển được cung cấp. Tất cả các thuộc tính khác được kế thừa từ phạm vi hiện tại.
Thông số
điều khiển | kiểm soát các phần phụ thuộc cho các hoạt động được tạo bằng phạm vi được trả về |
---|
Trả lại
- một phạm vi mới với các phần phụ thuộc điều khiển được cung cấp
Phạm vi công khai vớiThiết bị ( DeviceSpec deviceSpec)
Trả về một phạm vi mới sử dụng thông số kỹ thuật của thiết bị được cung cấp cho một op.
Các hoạt động được tạo trong phạm vi này sẽ đặt các hoạt động đã tạo trên (các) thiết bị phù hợp với thông số kỹ thuật được cung cấp.
Thông số
thông số thiết bị | đặc tả thiết bị cho người vận hành trong phạm vi được trả về |
---|
Trả lại
- một Phạm vi mới sử dụng opName cho các hoạt động.
Phạm vi công khai withName (Chuỗi opName)
Trả về một phạm vi mới sử dụng tên được cung cấp cho một op.
Các hoạt động được tạo trong phạm vi này sẽ có tên dạng name/opName[_suffix]
. Điều này cho phép bạn đặt tên cho một toán tử cụ thể có ý nghĩa hơn.
Tên phải khớp với biểu thức chính quy [A-Za-z0-9.][A-Za-z0-9_.\-]*
Thông số
tên op | tên cho một toán tử trong phạm vi trả về |
---|
Trả lại
- một Phạm vi mới sử dụng opName cho các hoạt động.
Ném
Đối số bất hợp phápNgoại lệ | nếu tên không hợp lệ |
---|
phạm vi công khai withNameAsSubScope (Chuỗi tên mặc định)
Trả về một phạm vi mới trong đó các hoạt động được thêm vào sẽ có tiền tố là tên op của phạm vi này (được đặt bởi withName(String)
) hoặc mặc định đã cho nếu nó không được đặt. Điều này được dự định sẽ được sử dụng cho các hoạt động tổng hợp.
Các hoạt động được tạo với phạm vi này sẽ có name/opName/
làm tiền tố. Tên thực tế sẽ là duy nhất trong phạm vi được trả về. Tất cả các thuộc tính khác được kế thừa từ phạm vi hiện tại.
Tên phạm vi con mặc định phải khớp với biểu thức chính quy [A-Za-z0-9.][A-Za-z0-9_.\-]*
Thông số
tên mặc định | tên của phạm vi phụ nếu tên của phạm vi này chưa được đặt. |
---|
Trả lại
- một phạm vi phụ mới
Ném
Đối số bất hợp phápNgoại lệ | nếu tên không hợp lệ |
---|
phạm vi công khai withSubScope (Chuỗi childScopeName)
Trả về một phạm vi mới trong đó các hoạt động được thêm vào sẽ có tiền tố tên được cung cấp.
Các hoạt động được tạo với phạm vi này sẽ có tiền tố name/childScopeName/
. Tên thực tế sẽ là duy nhất trong phạm vi được trả về. Tất cả các thuộc tính khác được kế thừa từ phạm vi hiện tại.
Tên phạm vi con phải khớp với biểu thức chính quy [A-Za-z0-9.][A-Za-z0-9_.\-]*
Thông số
tên phạm vi con | tên cho phạm vi con mới |
---|
Trả lại
- một phạm vi phụ mới
Ném
Đối số bất hợp phápNgoại lệ | nếu tên không hợp lệ |
---|