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

การคำนวณผลคูณเทนเซอร์ (tensor dot product) ใน Python


ภาพรวม

ใช้ numpy.tensordot() เพื่อคำนวณ tensor dot product ของอาร์เรย์ 3 มิติ สองชุด โดยระบุ axes ที่จะหดตัว

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

  • ระบุเป็น tuple ของสองลิสต์: ([แกนของ a], [แกนของ b])
  • ตัวอย่าง: axes=([1,0], [0,1]) หมายถึงหดตัวแกน 1,0 ของ a กับแกน 0,1 ของ b

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

  1. นำเข้าไลบรารี
    import numpy as np
    
  2. สร้างอาร์เรย์ 3 มิติ สองชุด
    arr1 = np.arange(60.).reshape(3, 4, 5)
    arr2 = np.arange(24.).reshape(4, 3, 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, axes=([1,0], [0,1])))
    

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

import numpy as np

arr1 = np.arange(60.).reshape(3, 4, 5)
arr2 = np.arange(24.).reshape(4, 3, 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,0], [0,1])))

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

อาร์เรย์ 1...
 [[[ 0.  1.  2.  3.  4.] ... ] ... ]
อาร์เรย์ 2...
 [[[ 0.  1.] [ 2.  3.] [ 4.  5.]] ... ]
มิติของอาร์เรย์ 1...
 3
มิติของอาร์เรย์ 2...
 3
รูปร่างของอาร์เรย์ 1...
 (3, 4, 5)
รูปร่างของอาร์เรย์ 2...
 (4, 3, 2)
Tensor dot product...
 [[4400. 4730.]
 [4532. 4874.]
 [4664. 5018.]
 [4796. 5162.]
 [4928. 5306.]]