Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การคำนวณผลคูณเทนเซอร์ (tensor dot product) สำหรับอาร์เรย์มิติต่างกัน ด้วยแกนแบบอาร์เรย์ใน Python


ภาพรวม

ใช้ numpy.tensordot() เพื่อคำนวณผลคูณเทนเซอร์ของอาร์เรย์ที่มีมิติต่างกัน โดยระบุ axes เป็น array-like object ที่มีสองอาร์เรย์ (a_axes, b_axes)

พารามิเตอร์ axes

  • เป็น array-like ที่มีสองอาร์เรย์: (a_axes, b_axes)
  • รวมผลคูณขององค์ประกอบตามแกนที่ระบุ
  • หากเป็นสเกลาร์ N: รวม N มิติสุดท้ายของ a และ N มิติแรกของ b

ขั้นตอนการทำงาน

  1. นำเข้าไลบรารี
    import numpy as np
    
  2. สร้างอาร์เรย์มิติต่างกัน
    arr1 = np.array(range(1, 9))
    arr1.shape = (2, 2, 2)
    arr2 = np.array(('p', 'q', 'r', 's'), dtype=object)
    arr2.shape = (2, 2)
    
  3. ตรวจสอบคุณสมบัติ
    print("อาร์เรย์ 1...\n", arr1)
    print("\nอาร์เรย์ 2...\n", arr2)
    print("\nมิติอาร์เรย์ 1...\n", arr1.ndim)
    print("\nมิติอาร์เรย์ 2...\n", arr2.ndim)
    print("\nรูปร่างอาร์เรย์ 1...\n", arr1.shape)
    print("\nรูปร่างอาร์เรย์ 2...\n", arr2.shape)
    
  4. คำนวณ tensor dot product
    print("\nTensor dot product...\n", np.tensordot(arr1, arr2, ((0, 1), (0, 1))))
    

ตัวอย่างโค้ดสมบูรณ์

import numpy as np

arr1 = np.array(range(1, 9))
arr1.shape = (2, 2, 2)
arr2 = np.array(('p', 'q', 'r', 's'), dtype=object)
arr2.shape = (2, 2)

print("อาร์เรย์ 1...\n", arr1)
print("\nอาร์เรย์ 2...\n", arr2)
print("\nมิติของอาร์เรย์ 1...\n", arr1.ndim)
print("\nมิติของอาร์เรย์ 2...\n", arr2.ndim)
print("\nรูปร่างของอาร์เรย์ 1...\n", arr1.shape)
print("\nรูปร่างของอาร์เรย์ 2...\n", arr2.shape)

print("\nTensor dot product...\n", np.tensordot(arr1, arr2, ((0, 1), (0, 1))))

ผลลัพธ์ที่คาดหวัง

อาร์เรย์ 1...
 [[[1 2] [3 4]] [[5 6] [7 8]]]
อาร์เรย์ 2...
 [['p' 'q'] ['r' 's']]
มิติของอาร์เรย์ 1...
 3
มิติของอาร์เรย์ 2...
 2
รูปร่างของอาร์เรย์ 1...
 (2, 2, 2)
รูปร่างของอาร์เรย์ 2...
 (2, 2)
Tensor dot product...
 ['pqqqrrrrrsssssss' 'ppqqqqrrrrrrssssssss']