ภาพรวม
ใช้ numpy.einsum_path() เพื่อหาลำดับการหดตัวที่มีค่าใช้จ่ายต่ำสุด (lowest cost contraction order) สำหรับนิพจน์ einsum ช่วยเพิ่มประสิทธิภาพการคำนวณ tensor contraction
พารามิเตอร์
- subscripts: ระบุ subscripts สำหรับการรวมผลรวม
- operands: อาร์เรย์สำหรับการดำเนินการ
- optimize: กลยุทธ์การเพิ่มประสิทธิภาพ เช่น 'greedy'
ขั้นตอนการทำงาน
- นำเข้าไลบรารี
import numpy as np - สร้างเทนเซอร์
p = np.random.rand(2, 2) q = np.random.rand(2, 5) r = np.random.rand(5, 2) - หา contraction path ที่เหมาะสมที่สุด
path_info = np.einsum_path('ij,jk,kl->il', p, q, r, optimize='greedy') - แสดงข้อมูล path
print(path_info[0]) print(path_info[1])
ตัวอย่างโค้ดสมบูรณ์
import numpy as np
np.random.seed(123)
p = np.random.rand(2, 2)
q = np.random.rand(2, 5)
r = np.random.rand(5, 2)
path_info = np.einsum_path('ij,jk,kl->il', p, q, r, optimize='greedy')
print(path_info[0])
print(path_info[1])
ผลลัพธ์ที่คาดหวัง
['einsum_path', (1, 2), (0, 1)]
Complete contraction: ij,jk,kl->il
Naive scaling: 4
Optimized scaling: 3
Naive FLOP count: 1.200e+02
Optimized FLOP count: 5.700e+01
Theoretical speedup: 2.105
Largest intermediate: 4.000e+00 elements