จัดการกลุ่มของคุณสมบัติที่เกี่ยวข้องเมื่อสร้างการดำเนินการ Tensorflow เช่น คำนำหน้าชื่อทั่วไป
Scope
คือคอนเทนเนอร์สำหรับคุณสมบัติทั่วไปที่ใช้กับ TensorFlow Ops รหัสผู้ใช้ปกติจะเริ่มต้น Scope
และมอบให้กับคลาสการสร้างการดำเนินการ ตัวอย่างเช่น:
Scope scope = new Scope(graph);
Constant c = Constant.create(scope, 42);
คลาสการสร้างการดำเนินการได้รับขอบเขต และใช้เพื่อตั้งค่าคุณสมบัติบนการดำเนินการ Tensorflow พื้นฐาน ตัวอย่างเช่น:
// 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()
...
}
}
ลำดับชั้นของขอบเขต:
Scope
มีวิธีการต่างๆ with()
ที่สร้างขอบเขตใหม่ โดยทั่วไปขอบเขตใหม่จะมีการเปลี่ยนแปลงคุณสมบัติหนึ่งในขณะที่คุณสมบัติอื่นๆ ได้รับการสืบทอดมาจากขอบเขตหลัก
ตัวอย่างการใช้ Constant
ที่นำมาใช้เหมือนเมื่อก่อน:
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, ...);
วัตถุขอบเขต ไม่ ปลอดภัยสำหรับเธรด
คอนสตรัคชั่นสาธารณะ
วิธีการสาธารณะ
OperationBuilder | ใช้ (ตัวสร้าง OperationBuilder ) ใช้ข้อกำหนดเฉพาะของอุปกรณ์และเพิ่มตัวดำเนินการแต่ละตัวใน controlDependencies เป็นอินพุตควบคุมให้กับตัวสร้างที่ให้มา |
OperationBuilder | ApplyControlDependencies (ตัวสร้าง OperationBuilder ) เพิ่มตัวดำเนินการแต่ละตัวใน controlDependencies เป็นอินพุตควบคุมให้กับตัวสร้างที่จัดเตรียมไว้ |
สภาพแวดล้อมการดำเนินการ | สิ่งแวดล้อม () ส่งคืนสภาพแวดล้อมการดำเนินการที่ใช้โดยขอบเขตนี้ |
สตริง | รับอุปกรณ์สตริง () ส่งคืนสตริงอุปกรณ์จากขอบเขต |
สตริง | makeOpName (สตริง defaultName) สร้างชื่อที่ไม่ซ้ำกันสำหรับโอเปอเรเตอร์ โดยใช้ค่าเริ่มต้นที่ให้ไว้หากจำเป็น |
ขอบเขต | withControlDependencies (ควบคุมได้ < Op >) ส่งกลับขอบเขตใหม่ที่การดำเนินการที่เพิ่มเข้ามาจะมีการขึ้นต่อกันของการควบคุมที่ให้มา |
ขอบเขต | |
ขอบเขต | withName (สตริง opName) กลับขอบเขตใหม่ที่ใช้ชื่อที่ให้ไว้สำหรับสหกรณ์ |
ขอบเขต | withNameAsSubScope (สตริง defaultName) ส่งคืนขอบเขตใหม่ที่การดำเนินการที่เพิ่มจะนำหน้าด้วยชื่อ op ของขอบเขตนี้ (ตั้งค่าโดย withName(String) ) หรือค่าเริ่มต้นที่กำหนดหากไม่ได้ตั้งค่า |
ขอบเขต | withSubScope (สตริงชื่อลูกขอบเขต) ส่งกลับขอบเขตใหม่ที่การดำเนินการที่เพิ่มจะมีคำนำหน้าชื่อที่ให้ไว้ |
วิธีการสืบทอด
คอนสตรัคชั่นสาธารณะ
ขอบเขต สาธารณะ ( ExecutionEnvironment env)
สร้างขอบเขตระดับบนสุดใหม่
พารามิเตอร์
สิ่งแวดล้อม | สภาพแวดล้อมการดำเนินการที่ใช้โดยขอบเขต |
---|
วิธีการสาธารณะ
ใช้ OperationBuilder สาธารณะ (ตัวสร้าง OperationBuilder )
ใช้ข้อกำหนดเฉพาะของอุปกรณ์และเพิ่มตัวดำเนินการแต่ละตัวใน controlDependencies เป็นอินพุตควบคุมให้กับตัวสร้างที่ให้มา
พารามิเตอร์
ผู้สร้าง | OperationBuilder เพื่อเพิ่มอินพุตควบคุมและข้อมูลจำเพาะของอุปกรณ์ |
---|
OperationBuilder สาธารณะ ApplyControlDependencies (ตัวสร้าง OperationBuilder )
เพิ่มตัวดำเนินการแต่ละตัวใน controlDependencies เป็นอินพุตควบคุมให้กับตัวสร้างที่จัดเตรียมไว้
พารามิเตอร์
ผู้สร้าง | OperationBuilder เพื่อเพิ่มอินพุตควบคุม |
---|
สตริงสาธารณะ getDeviceString ()
ส่งคืนสตริงอุปกรณ์จากขอบเขต
สาธารณะสตริง makeOpName (สตริง defaultName)
สร้างชื่อที่ไม่ซ้ำกันสำหรับโอเปอเรเตอร์ โดยใช้ค่าเริ่มต้นที่ให้ไว้หากจำเป็น
โดยปกติจะเรียกเฉพาะคลาสการสร้างตัวดำเนินการเท่านั้น
วิธีการนี้จะสร้างชื่อที่ไม่ซ้ำกัน ซึ่งเหมาะสมกับขอบเขตชื่อที่ควบคุมโดยอินสแตนซ์นี้ รหัสอาคารของตัวดำเนินการทั่วไปอาจมีลักษณะดังนี้
scope.env().opBuilder("Const", scope.makeOpName("Const"))...
หมายเหตุ: หากคุณจัดเตรียมคลาสการสร้างตัวดำเนินการแบบผสม (เช่น คลาสที่สร้างชุดของการดำเนินการที่เกี่ยวข้องโดยการเรียกโค้ดการสร้างตัวดำเนินการอื่นๆ) ชื่อที่ให้ไว้จะทำหน้าที่เป็นขอบเขตย่อยสำหรับตัวดำเนินการพื้นฐานทั้งหมด
พารามิเตอร์
ชื่อเริ่มต้น | ชื่อของตัวดำเนินการพื้นฐาน |
---|
การส่งคืน
- ชื่อเฉพาะสำหรับโอเปอเรเตอร์
ขว้าง
ข้อยกเว้นอาร์กิวเมนต์ที่ผิดกฎหมาย | หากชื่อเริ่มต้นไม่ถูกต้อง |
---|
ขอบเขต สาธารณะ ที่มีการควบคุมการพึ่งพา (Iterable < Op > การควบคุม)
ส่งกลับขอบเขตใหม่ที่การดำเนินการที่เพิ่มเข้ามาจะมีการขึ้นต่อกันของการควบคุมที่ให้มา
การดำเนินการที่สร้างขึ้นด้วยขอบเขตนี้จะมีขอบเขตการควบคุมจากแต่ละการควบคุมที่ให้มา คุณสมบัติอื่นๆ ทั้งหมดสืบทอดมาจากขอบเขตปัจจุบัน
พารามิเตอร์
การควบคุม | ควบคุมการพึ่งพาสำหรับ ops ที่สร้างขึ้นด้วยขอบเขตที่ส่งคืน |
---|
การส่งคืน
- ขอบเขตใหม่ที่มีการพึ่งพาการควบคุมที่ให้มา
ขอบเขต สาธารณะ กับอุปกรณ์ ( DeviceSpec deviceSpec)
ส่งคืนขอบเขตใหม่ที่ใช้ข้อกำหนดอุปกรณ์ที่ให้มาสำหรับปฏิบัติการ
การดำเนินการที่สร้างขึ้นภายในขอบเขตนี้จะวางการดำเนินการที่สร้างขึ้นบนอุปกรณ์ที่ตรงกับข้อมูลจำเพาะที่ให้ไว้
พารามิเตอร์
ข้อมูลจำเพาะของอุปกรณ์ | ข้อมูลจำเพาะของอุปกรณ์สำหรับผู้ปฏิบัติงานในขอบเขตที่ส่งคืน |
---|
การส่งคืน
- ขอบเขตใหม่ที่ใช้ opName สำหรับการดำเนินงาน
ขอบเขต สาธารณะ withName (String opName)
กลับขอบเขตใหม่ที่ใช้ชื่อที่ให้ไว้สำหรับสหกรณ์
การดำเนินการที่สร้างขึ้นภายในขอบเขตนี้จะมีชื่อของฟอร์ม name/opName[_suffix]
ซึ่งช่วยให้คุณตั้งชื่อโอเปอเรเตอร์เฉพาะเจาะจงให้มีความหมายมากขึ้น
ชื่อต้องตรงกับนิพจน์ทั่วไป [A-Za-z0-9.][A-Za-z0-9_.\-]*
พารามิเตอร์
opName | ชื่อของตัวดำเนินการในขอบเขตที่ส่งคืน |
---|
การส่งคืน
- ขอบเขตใหม่ที่ใช้ opName สำหรับการดำเนินงาน
ขว้าง
ข้อยกเว้นอาร์กิวเมนต์ที่ผิดกฎหมาย | ถ้าชื่อไม่ถูกต้อง |
---|
ขอบเขต สาธารณะ withNameAsSubScope (สตริง defaultName)
ส่งคืนขอบเขตใหม่ที่การดำเนินการที่เพิ่มจะนำหน้าด้วยชื่อ op ของขอบเขตนี้ (ตั้งค่าโดย withName(String)
) หรือค่าเริ่มต้นที่กำหนดหากไม่ได้ตั้งค่า สิ่งนี้มีจุดประสงค์เพื่อใช้สำหรับการดำเนินการแบบผสม
Ops ที่สร้างขึ้นด้วยขอบเขตนี้จะมี name/opName/
เป็นคำนำหน้า ชื่อจริงจะไม่ซ้ำกันในขอบเขตที่ส่งคืน คุณสมบัติอื่นๆ ทั้งหมดสืบทอดมาจากขอบเขตปัจจุบัน
ชื่อขอบเขตย่อยเริ่มต้นจะต้องตรงกับนิพจน์ทั่วไป [A-Za-z0-9.][A-Za-z0-9_.\-]*
พารามิเตอร์
ชื่อเริ่มต้น | ชื่อของขอบเขตย่อย หากยังไม่ได้ตั้งชื่อขอบเขตนี้ |
---|
การส่งคืน
- ขอบเขตย่อยใหม่
ขว้าง
ข้อยกเว้นอาร์กิวเมนต์ที่ผิดกฎหมาย | ถ้าชื่อไม่ถูกต้อง |
---|
ขอบเขต สาธารณะ withSubScope (สตริง childScopeName)
ส่งกลับขอบเขตใหม่ที่การดำเนินการที่เพิ่มจะมีคำนำหน้าชื่อที่ให้ไว้
Ops ที่สร้างขึ้นด้วยขอบเขตนี้จะมี name/childScopeName/
เป็นคำนำหน้า ชื่อจริงจะไม่ซ้ำกันในขอบเขตที่ส่งคืน คุณสมบัติอื่นๆ ทั้งหมดสืบทอดมาจากขอบเขตปัจจุบัน
ชื่อขอบเขตย่อยต้องตรงกับนิพจน์ทั่วไป [A-Za-z0-9.][A-Za-z0-9_.\-]*
พารามิเตอร์
ชื่อขอบเขตเด็ก | ชื่อสำหรับขอบเขตลูกใหม่ |
---|
การส่งคืน
- ขอบเขตย่อยใหม่
ขว้าง
ข้อยกเว้นอาร์กิวเมนต์ที่ผิดกฎหมาย | ถ้าชื่อไม่ถูกต้อง |
---|