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>
create (ขอบเขต ขอบเขต , Iterable< Operand <T>> อินพุต, สมการสตริง)
วิธีการจากโรงงานเพื่อสร้างคลาสที่รวมการดำเนินการ Einsum ใหม่
เอาท์พุต <T>
เอาท์พุท ()
เอาท์พุตเทนเซอร์ที่มีรูปร่างขึ้นอยู่กับ "สมการ"

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

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

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

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

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

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

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

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

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

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