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

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


ภาพรวม

ใช้ numpy.tensordot() พร้อมพารามิเตอร์ axes=1 เพื่อคำนวณ tensor dot product ตามแกนที่กำหนดเฉพาะ

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

  • หากเป็น integer 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 ด้วย axes=1
    print("\nTensor dot product...\n", np.tensordot(arr1, arr2, axes=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, axes=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...
 [[['prr' 'qss'] ['ppprrrr' 'qqqssss']]
 [['ppppprrrrrr' 'qqqqqssssss'] ['ppppppprrrrrrrr' 'qqqqqqqssssssss']]]