คำเตือน: API นี้เลิกใช้งานแล้วและจะถูกลบออกใน TensorFlow เวอร์ชันในอนาคตหลังจาก การแทนที่ เสถียรแล้ว

Einsum

ชั้นสุดท้ายสาธารณะ Einsum

การหดตัวของเทนเซอร์ตามแบบแผนการบวกของไอน์สไตน์

ใช้การหดตัวและการลดเทนเซอร์ทั่วไป แต่ละอินพุตเทนเซอร์ต้องมีตัวห้อยอินพุตที่สอดคล้องกันซึ่งปรากฏในด้านซ้ายมือของสมการที่คั่นด้วยเครื่องหมายจุลภาค ทางด้านขวามือของสมการประกอบด้วยตัวห้อยเอาต์พุต ตัวห้อยอินพุตและตัวห้อยเอาต์พุตควรประกอบด้วยเลเบลแกนที่มีชื่อเป็นศูนย์หรือมากกว่าและจุดไข่ปลา (`...`) ไม่เกินหนึ่งจุด

ป้ายกำกับแกนที่มีชื่ออาจเป็นอักขระเดี่ยวใดๆ นอกเหนือจากที่มีความหมายพิเศษ คือ `,.->` พฤติกรรมของ Op นี้ไม่ได้กำหนดไว้หากได้รับสมการที่มีรูปแบบไม่ถูกต้อง เนื่องจากการตรวจสอบเสร็จสิ้นในเวลาที่สร้างกราฟ เราจึงละเว้นการตรวจสอบความถูกต้องของรูปแบบที่รันไทม์

หมายเหตุ: Op นี้ ไม่ได้ ตั้งใจให้ผู้ใช้เรียก ผู้ใช้ควรโทรหา tf.einsum โดยตรงแทน มันเป็น Op ที่ซ่อนอยู่ซึ่งใช้โดย tf.einsum

การดำเนินการจะถูกนำไปใช้กับอินพุตตามกฎต่อไปนี้:

(a) เส้นทแยงมุมทั่วไป: สำหรับขนาดอินพุตที่สอดคล้องกับป้ายกำกับแกนที่ปรากฏมากกว่าหนึ่งครั้งในตัวห้อยอินพุตเดียวกัน เราใช้เส้นทแยงมุมทั่วไป (`k` มิติ) ตัวอย่างเช่น ในสมการ `iii->i` ที่มีรูปร่างอินพุต `[3, 3, 3]` เส้นทแยงมุมทั่วไปจะประกอบด้วยองค์ประกอบ `3' ที่ดัชนี `(0, 0, 0)`, `(1 , 1, 1)` และ `(2, 2, 2)` เพื่อสร้างเทนเซอร์ของรูปร่าง `[3]`

(b) การลด: แกนที่สัมพันธ์กับป้ายกำกับที่ปรากฏในตัวห้อยอินพุตเดียวเท่านั้น แต่ไม่รวมอยู่ในตัวห้อยเอาต์พุตจะถูกสรุปก่อนการหดตัวของเทนเซอร์ ตัวอย่างเช่น ในสมการ "ab,bc->b" ป้ายกำกับแกน "a" และ "c" คือป้ายกำกับแกนลดขนาด

(c) ขนาดแบทช์: แกนที่สัมพันธ์กับป้ายกำกับที่ปรากฏในแต่ละอินพุทตัวห้อยและในตัวห้อยเอาท์พุทประกอบขึ้นเป็นมิติแบทช์ในการหดตัวของเทนเซอร์ ป้ายชื่อแกนที่ไม่มีชื่อซึ่งสอดคล้องกับจุดไข่ปลา (`...`) ยังสอดคล้องกับมิติชุดงานด้วย ตัวอย่างเช่น สำหรับสมการที่แสดงถึงการคูณเมทริกซ์แบบกลุ่ม "bij,bjk->bik" ป้ายกำกับแกน "b" จะสอดคล้องกับมิติข้อมูลแบทช์

(d) การหดตัว: ในกรณีของ binary einsum แกนที่สอดคล้องกับฉลากที่ปรากฏในสองอินพุตที่แตกต่างกัน (และไม่ใช่ในเอาต์พุต) จะถูกหดเข้าหากัน เมื่อพิจารณาสมการการคูณเมทริกซ์แบบกลุ่มอีกครั้ง (`bij,bjk->bik`) ป้ายกำกับแกนย่อคือ `j`

(e) ขยายแนวทแยง: หากตัวห้อยเอาต์พุตมีป้ายกำกับแกนซ้ำ (ชัดเจน) การดำเนินการตรงข้ามของ (a) จะถูกนำไปใช้ ตัวอย่างเช่น ในสมการ `i->iii` และรูปร่างอินพุต `[3]` ผลลัพธ์ของรูปร่าง `[3, 3, 3]` จะเป็นศูนย์ทั้งหมด ยกเว้นในแนวทแยง (ทั่วไป) ที่เติมด้วย ค่าจากอินพุต หมายเหตุ: การดำเนินการนี้ไม่รองรับโดย `np.einsum` หรือ tf.einsum ; มีให้เพื่อเปิดใช้งานการคำนวณการไล่ระดับสีเชิงสัญลักษณ์ของ tf.einsum

ตัวห้อยเอาต์พุตต้องมีเฉพาะป้ายกำกับที่ปรากฏในตัวห้อยอินพุตอย่างน้อยหนึ่งรายการ นอกจากนี้ การแมปมิติทั้งหมดกับป้ายกำกับแกนเดียวกันจะต้องเท่ากัน

ตัวห้อยอินพุตและเอาต์พุตใดๆ อาจมีจุดไข่ปลาตัวเดียว (`...`) จุดไข่ปลาเหล่านี้ถูกแมปกับมิติที่ไม่สอดคล้องกับป้ายกำกับแกนที่ระบุชื่อ หากอินพุตสองรายการมีจุดไข่ปลา อินพุตเหล่านั้นจะถูกออกอากาศตามการออกอากาศ NumPy มาตรฐาน [กฎ](http://docs.scipy.org/doc/numpy/user/basics.broadcasting.html)

มิติข้อมูลที่ออกอากาศจะอยู่ในตำแหน่งที่สอดคล้องกันของจุดไข่ปลาในตัวห้อยเอาต์พุต หากมิติข้อมูลที่ออกอากาศไม่ว่างเปล่าและตัวห้อยเอาต์พุตไม่มีจุดไข่ปลา ข้อผิดพลาด InvalidArgument จะเพิ่มขึ้น

วิธีการสาธารณะ

เอาท์พุต <T>
เป็นเอาต์พุต ()
ส่งกลับค่าแฮนเดิลเชิงสัญลักษณ์ของเทนเซอร์
คงที่ <T> Einsum <T>
สร้าง ( ขอบเขต ขอบเขต, Iterable < ตัวถูกดำเนินการ <T>> อินพุต, สมการสตริง)
วิธีการจากโรงงานเพื่อสร้างคลาสที่ปิดการดำเนินการ Einsum ใหม่
เอาท์พุต <T>
เอาท์พุท ()
เทนเซอร์เอาต์พุตที่มีรูปร่างขึ้นอยู่กับ "สมการ"

วิธีการสืบทอด

วิธีการสาธารณะ

เอาต์พุต สาธารณะ <T> asOutput ()

ส่งกลับค่าแฮนเดิลเชิงสัญลักษณ์ของเทนเซอร์

อินพุตสำหรับการทำงานของ TensorFlow เป็นเอาต์พุตของการดำเนินการอื่นของ TensorFlow วิธีนี้ใช้เพื่อขอรับหมายเลขอ้างอิงเชิงสัญลักษณ์ที่แสดงถึงการคำนวณของอินพุต

Einsum สาธารณะแบบคงที่ <T> สร้าง ( ขอบเขต ขอบเขต, Iterable < ตัวถูกดำเนินการ <T>> อินพุต, สมการสตริง)

วิธีการจากโรงงานเพื่อสร้างคลาสที่ปิดการดำเนินการ Einsum ใหม่

พารามิเตอร์
ขอบเขต ขอบเขตปัจจุบัน
อินพุต รายชื่อ 1 หรือ 2 เทนเซอร์
สมการ สตริงที่อธิบายการดำเนินการรวมของไอน์สไตน์ ในรูปแบบ np.einsum
คืนสินค้า
  • ตัวอย่างใหม่ของ Einsum

เอาต์พุต สาธารณะ <T> เอาต์พุต ()

เทนเซอร์เอาต์พุตที่มีรูปร่างขึ้นอยู่กับ "สมการ"