Một biểu đồ có thể được gọi dưới dạng một hàm duy nhất, có chữ ký đầu vào và đầu ra.
Một hàm cũng có thể gọi một tf.function được xác định trong SavedModelBundle
.
ConcreteFunction myFunction = savedModelBundle.function("myFunctionSignatureName");
Map<String, Tensor> outputTensorMap = myFunction.call(inputTensorMap);
Phương pháp công khai
Tenxơ | |
Bản đồ<Chuỗi, Tensor > | |
trống rỗng | đóng () |
hàm bê tông tĩnh | |
hàm bê tông tĩnh | |
hàm bê tông tĩnh | |
đồ thị | đồ thị () Trả về đồ thị của hàm này |
trống rỗng | lưu (Xuất chuỗiDir) Xuất chức năng này dưới dạng mô hình đã lưu. |
Phiên họp | |
Chữ ký | chữ ký () Trả về chữ ký của hàm này |
Sợi dây | toString () |
Phương pháp kế thừa
Phương pháp công khai
cuộc gọi Tensor công khai ( Tensor tensor )
Gọi một hàm có một đầu vào và đầu ra duy nhất.
Người gọi có trách nhiệm đóng tất cả Tensors.
Thông số
tenxơ | tensor đầu vào |
---|
Trả lại
- tensor đầu ra
Ném
Đối số bất hợp phápNgoại lệ | nếu có nhiều tham số đầu vào hoặc đầu ra được xác định trong hàm |
---|
public Map<String, Tensor > call (Bản đồ<String, Tensor > đối số)
Gọi một hàm.
Người gọi có trách nhiệm đóng tất cả Tensors.
Thông số
lý lẽ | danh sách các tensor để truyền đầu vào cho hàm, được ánh xạ theo tên chữ ký của chúng |
---|
Trả lại
- các tensor đầu ra do việc thực thi hàm, được ánh xạ theo tên chữ ký của chúng
Ném
Đối số bất hợp phápNgoại lệ |
---|
đóng khoảng trống công khai ()
public static ConcreteFunction tạo (Chữ ký chữ ký , Phiên phiên )
Tạo một hàm từ chữ ký và phiên biểu đồ hợp lệ.
Hàm sẽ không sở hữu phiên cũng như biểu đồ của nó, nghĩa là thời gian tồn tại của chúng có thể vượt ra ngoài phạm vi của hàm. Do đó, chức năng này không cần phải đóng sau khi sử dụng. Ví dụ:
try (Graph g = new Graph()) {
Placeholder<TFloat32> input = tf.placeholder(TFloat32.class);
Add<TFloat32> output = tf.math.add(input, tf.constant(2.0f));
Signature signature = Signature.builder().input("x", input).output("y", output).build();
try (Session s = new Session(g)) {
// Auto-closing the function just as an example but this is not required since it has
// no effect
try (ConcreteFunction f = ConcreteFunction.create(signature, s);
TFloat32 t = TFloat32.scalarOf(2.0f)) {
assertEquals(4.0f, ((TFloat32)function.call(x)).getFloat());
// Session s is still valid at this point
}
// Graph g is still valid at this point
}
}
Thông số
chữ ký | chữ ký của hàm để tạo |
---|---|
phiên họp | một phiên hợp lệ cho một biểu đồ khởi tạo |
Trả lại
- một chức năng mới
tạo ra ConcreteFunction tĩnh công khai (Function<Ops, Signature > functionBuilder)
Tạo một hàm bằng cách xây dựng một biểu đồ mới.
functionBuilder
phải khởi tạo biểu đồ hàm từ phiên bản ERROR(/Ops)
được cung cấp và trả về một chữ ký hợp lệ sẽ được sử dụng để cung cấp các tensor đầu vào và tìm nạp các tensor đầu ra khi thực thi.
Hàm sẽ là chủ sở hữu của biểu đồ mới và phiên kết quả của nó. Do đó, hàm phải được bao bọc đúng cách bằng khối try-with-resources để đảm bảo rằng tất cả tài nguyên gốc sẽ được giải phóng sau khi hàm bị loại bỏ. Ví dụ:
public class MyModel {
public static Signature addTwo(Ops tf) {
Placeholder<TFloat32> input = tf.placeholder(TFloat32.class);
Add<TFloat32> output = tf.math.add(input, tf.constant(2.0f));
return Signature.builder("addTwo").input("x", input).output("y", output).build();
public static void main(String args[]) {
try (ConcreteFunction function = ConcreteFunction.create(MyModel::addTwo);
TFloat32 x = TFloat32.scalarOf(2.0f)) {
assertEquals(4.0f, ((TFloat32)function.call(x)).getFloat());
}
}
}
}
Thông số
hàmBuilder | người xây dựng chức năng |
---|
Trả lại
- chức năng mới
public static ConcreteFunction tạo (Chữ ký chữ ký , Biểu đồ đồ thị )
Tạo một hàm từ chữ ký và biểu đồ hiện có.
Hàm sẽ giữ quyền sở hữu phiên được sử dụng để chạy biểu đồ chứ không phải bản thân biểu đồ, nghĩa là thời gian tồn tại của biểu đồ sau có thể vượt ra ngoài phạm vi của hàm. Ví dụ:
try (Graph g = new Graph()) {
Placeholder<TFloat32> input = tf.placeholder(TFloat32.class);
Add<TFloat32> output = tf.math.add(input, tf.constant(2.0f));
Signature signature = Signature.builder().input("x", input).output("y", output).build();
try (ConcreteFunction f = ConcreteFunction.create(signature, g);
TFloat32 x = TFloat32.scalarOf(2.0f)) {
assertEquals(4.0f, ((TFloat32)function.call(x)).getFloat());
// Graph g is still valid at this point
}
}
Thông số
chữ ký | chữ ký của hàm để tạo |
---|---|
đồ thị | một biểu đồ hợp lệ và được khởi tạo |
Trả lại
- một chức năng mới
lưu khoảng trống công khai (Chuỗi xuấtDir)
Xuất chức năng này dưới dạng mô hình đã lưu.
Phương thức này là lối tắt thuận tiện tương đương với SavedModel.exporter(exportDir).withFunction(this).export()
Thông số
xuấtDir | thư mục nơi xuất mô hình đã lưu |
---|
Ném
IOException | nếu mô hình đã lưu hoặc trạng thái biến không thể ghi vào đĩa |
---|
phiên phiên công khai ()
Trả về phiên được sử dụng để thực thi biểu đồ khi gọi hàm này
Nói chung, người dùng không cần phải xử lý trực tiếp phiên của một hàm và thay vào đó dựa vào call(Map)
để thực thi biểu đồ. Nhưng trong một số trường hợp, việc truy cập trực tiếp vào phiên có thể cần thiết vì nó cho phép nhiều tùy chọn chạy hơn.
Trả lại
- phiên chức năng