กราฟที่สามารถเรียกใช้เป็นฟังก์ชันเดียวพร้อมลายเซ็นอินพุตและเอาต์พุต
ฟังก์ชั่นยังสามารถเรียกใช้ tf.function ที่กำหนดไว้ใน SavedModelBundle
ConcreteFunction myFunction = savedModelBundle.function("myFunctionSignatureName");
Map<String, Tensor> outputTensorMap = myFunction.call(inputTensorMap);
วิธีการสาธารณะ
เทนเซอร์ | |
แผนที่<สตริง เทนเซอร์ > | |
เป็นโมฆะ | ปิด () |
ฟังก์ชั่นคอนกรีต คงที่ | |
ฟังก์ชั่นคอนกรีต คงที่ | |
ฟังก์ชั่นคอนกรีต คงที่ | |
กราฟ | กราฟ () ส่งกลับกราฟของฟังก์ชันนี้ |
เป็นโมฆะ | บันทึก (สตริงส่งออกDir) ส่งออกฟังก์ชันนี้เป็นโมเดลที่บันทึกไว้ |
การประชุม | |
ลายเซ็น | ลายเซ็น () ส่งกลับลายเซ็นของฟังก์ชันนี้ |
สตริง | toString () |
วิธีการสืบทอด
วิธีการสาธารณะ
การเรียก เทนเซอร์ สาธารณะ ( เทน เซอร์ เทนเซอร์)
เรียกใช้ฟังก์ชันที่มีอินพุตและเอาต์พุตเดียว
ผู้โทรมีหน้าที่ปิดเทนเซอร์ทั้งหมด
พารามิเตอร์
เทนเซอร์ | เทนเซอร์อินพุต |
---|
การส่งคืน
- เทนเซอร์เอาท์พุต
ขว้าง
ข้อยกเว้นอาร์กิวเมนต์ที่ผิดกฎหมาย | หากมีพารามิเตอร์อินพุตหรือเอาต์พุตหลายตัวที่กำหนดไว้ในฟังก์ชัน |
---|
แผนที่สาธารณะ <สตริง, เทนเซอร์ > โทร (อาร์กิวเมนต์แผนที่ <สตริง, เทนเซอร์ >)
เรียกใช้ฟังก์ชัน
ผู้โทรมีหน้าที่ปิดเทนเซอร์ทั้งหมด
พารามิเตอร์
ข้อโต้แย้ง | รายการเทนเซอร์ที่จะส่งผ่านอินพุตไปยังฟังก์ชัน ซึ่งแมปตามชื่อลายเซ็น |
---|
การส่งคืน
- เทนเซอร์เอาท์พุตที่เป็นผลมาจากการทำงานของฟังก์ชัน แมปตามชื่อลายเซ็น
ขว้าง
ข้อยกเว้นอาร์กิวเมนต์ที่ผิดกฎหมาย |
---|
โมฆะสาธารณะ ปิด ()
สร้าง ConcreteFunction สาธารณะแบบคงที่ (ลาย เซ็นลายเซ็น , เซสชัน เซสชัน)
สร้างฟังก์ชันจากลายเซ็นและเซสชันกราฟที่ถูกต้อง
ฟังก์ชันนี้จะไม่เป็นเจ้าของเซสชันหรือกราฟของเซสชัน ซึ่งหมายความว่าอายุการใช้งานของเซสชันสามารถขยายออกไปนอกขอบเขตของฟังก์ชันได้ ดังนั้นจึงไม่จำเป็นต้องปิดฟังก์ชันนี้หลังการใช้งาน ตัวอย่างเช่น:
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
}
}
พารามิเตอร์
ลายเซ็น | ลายเซ็นของฟังก์ชันที่จะสร้าง |
---|---|
การประชุม | เซสชันที่ถูกต้องกับกราฟเริ่มต้น |
การส่งคืน
- ฟังก์ชั่นใหม่
สร้าง ConcreteFunction สาธารณะแบบคงที่ (ฟังก์ชัน <Ops, ลายเซ็น > functionBuilder)
สร้างฟังก์ชันโดยการสร้างกราฟใหม่
functionBuilder
ต้องเริ่มต้นกราฟฟังก์ชันจากอินสแตนซ์ ERROR(/Ops)
ที่ให้มา และส่งคืนลายเซ็นที่ถูกต้องซึ่งจะใช้ในการป้อนเทนเซอร์อินพุตและดึงเทนเซอร์เอาท์พุตในการดำเนินการ
ฟังก์ชันจะเป็นเจ้าของกราฟใหม่และเซสชันผลลัพธ์ ดังนั้น ฟังก์ชันจะต้องถูกล้อมรอบอย่างถูกต้องด้วยบล็อก try-with-resources เพื่อรับประกันว่าทรัพยากรดั้งเดิมทั้งหมดจะถูกปล่อยว่างเมื่อฟังก์ชันถูกละทิ้ง ตัวอย่างเช่น:
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());
}
}
}
}
พารามิเตอร์
ฟังก์ชั่นBuilder | ตัวสร้างฟังก์ชัน |
---|
การส่งคืน
- ฟังก์ชั่นใหม่
สร้าง ConcreteFunction สาธารณะแบบคงที่ (ลายเซ็น ลายเซ็น , กราฟ กราฟ )
สร้างฟังก์ชันจากลายเซ็นและกราฟที่มีอยู่
ฟังก์ชันจะคงความเป็นเจ้าของเซสชันที่ใช้ในการเรียกใช้กราฟ แต่ไม่ใช่ตัวกราฟเอง ซึ่งหมายความว่าอายุการใช้งานของเซสชันหลังสามารถขยายออกไปเกินขอบเขตของฟังก์ชันได้ ตัวอย่างเช่น:
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
}
}
พารามิเตอร์
ลายเซ็น | ลายเซ็นของฟังก์ชันที่จะสร้าง |
---|---|
กราฟ | กราฟที่ถูกต้องและเริ่มต้น |
การส่งคืน
- ฟังก์ชั่นใหม่
บันทึก โมฆะสาธารณะ (String ExportDir)
ส่งออกฟังก์ชันนี้เป็นโมเดลที่บันทึกไว้
วิธีนี้เป็นทางลัดที่สะดวกเทียบเท่ากับ SavedModel.exporter(exportDir).withFunction(this).export()
พารามิเตอร์
ส่งออกDir | ไดเร็กทอรีที่จะส่งออกโมเดลที่บันทึกไว้ |
---|
ขว้าง
IOข้อยกเว้น | หากโมเดลที่บันทึกไว้หรือสถานะตัวแปรไม่สามารถเขียนลงบนดิสก์ได้ |
---|
เซ สชั่น สาธารณะ ()
ส่งคืนเซสชันที่ใช้ในการรันกราฟเมื่อเรียกใช้ฟังก์ชันนี้
โดยทั่วไป ผู้ใช้ไม่จำเป็นต้องจัดการเซสชันของฟังก์ชันโดยตรงและอาศัย call(Map)
เพื่อดำเนินการกราฟแทน แต่ในบางกรณี อาจจำเป็นต้องเข้าถึงเซสชันโดยตรง เนื่องจากจะทำให้มีตัวเลือกการรันมากขึ้น
การส่งคืน
- เซสชั่นการทำงาน