Để giải phương trình tensor a @ x = b (tensor dot), dùng numpy.linalg.tensorsolve(). Giả định tất cả chỉ mục của x được tổng hợp trong tích, cùng với các chỉ mục phải nhất của a. Hình dạng a phải là b.shape + Q với prod(Q) == prod(b.shape).
Tham số
- a (array_like): Tensor hệ số, shape
b.shape + Q. - b (array_like): Tensor vế phải.
- axes (tuple, tùy chọn): Các trục reorder trước khi nghịch đảo.
Các bước thực hiện
Nhập NumPy, tạo tensor hệ số và vế phải:
import numpy as np
# Tensor hệ số: eye(24) reshape (6, 4, 2, 3, 4)
arr1 = np.eye(2*3*4)
arr1.shape = (2*3, 4, 2, 3, 4)
# Tensor vế phải ngẫu nhiên (6, 4)
arr2 = np.random.randn(2*3, 4)
print("Tensor hệ số...\n", arr1)
print("\nTensor vế phải...\n", arr2)
print("\nSố chiều tensor hệ số...\n", arr1.ndim)
print("\nSố chiều tensor vế phải...\n", arr2.ndim)
print("\nHình dạng tensor hệ số...\n", arr1.shape)
print("\nHình dạng tensor vế phải...\n", arr2.shape)
# Giải phương trình tensor
print("\nKết quả...\n", np.linalg.tensorsolve(arr1, arr2))
Ví dụ hoàn chỉnh
import numpy as np
arr1 = np.eye(2*3*4)
arr1.shape = (2*3, 4, 2, 3, 4)
arr2 = np.random.randn(2*3, 4)
print("Tensor hệ số...\n", arr1)
print("\nTensor vế phải...\n", arr2)
print("\nSố chiều tensor hệ số...\n", arr1.ndim)
print("\nSố chiều tensor vế phải...\n", arr2.ndim)
print("\nHình dạng tensor hệ số...\n", arr1.shape)
print("\nHình dạng tensor vế phải...\n", arr2.shape)
print("\nKết quả...\n", np.linalg.tensorsolve(arr1, arr2))
Kết quả đầu ra
Kết quả shape (2, 3, 4) - nghiệm tensor. Xem output gốc cho giá trị cụ thể do arr2 ngẫu nhiên.