Computer >> Máy Tính >  >> Lập trình >> Python

Giải phương trình tensor bằng Python

Để giải phương trình tensor, hãy sử dụng phương thức numpy.linalg.tensorsolve () trong Python. Giả định rằng tất cả các chỉ số của x được tổng hợp trong tích, cùng với các chỉ số ngoài cùng bên phải của a, như được thực hiện trong, ví dụ, tensordot (a, x, axis =b.ndim).

Tham số thứ nhất, a là một hệ số tensor, có dạng b. Hình dạng + Q. Q, một bộ giá trị, bằng hình dạng của tensor phụ đó của a bao gồm số thích hợp của các chỉ số ngoài cùng bên phải của nó và phải sao cho sản phẩm ( Q) ==prod (b.shape). Tham số thứ 2, b là một tensor bên phải, có thể có hình dạng bất kỳ. Tham số thứ 3, trục là một trục để sắp xếp lại thứ tự sang phải, trước khi đảo ngược. Nếu Không có (mặc định), không có việc sắp xếp lại thứ tự nào được thực hiện.

Các bước

Đầu tiên, hãy nhập các thư viện được yêu cầu-

import numpy as np

Tạo hai mảng rỗng bằng phương thức array ()

arr1 = np.eye(2*3*4)
arr1.shape = (2*3, 4, 2, 3, 4)

arr2 = np.random.randn(2*3, 4)

Hiển thị các mảng -

print("Array1...\n",arr1)
print("\nArray2...\n",arr2)

Kiểm tra Kích thước của cả hai mảng -

print("\nDimensions of Array1...\n",arr1.ndim)
print("\nDimensions of Array2...\n",arr2.ndim)

Kiểm tra Hình dạng của cả hai mảng -

print("\nShape of Array1...\n",arr1.shape)
print("\nShape of Array2...\n",arr2.shape)

Để giải phương trình tensor, hãy sử dụng phương thức numpy.linalg.tensorsolve () trong Python. Giả định rằng tất cả các chỉ số của x được tính tổng trong tích, cùng với các chỉ số ngoài cùng bên phải của a, như được thực hiện trong ví dụ, tensordot (a, x, axis =b.ndim) -

print("\nResult...\n",np.linalg.tensorsolve(arr1, arr2))

Ví dụ

import numpy as np

# Creating two numpy arrays using the array() method
arr1 = np.eye(2*3*4)
arr1.shape = (2*3, 4, 2, 3, 4)
arr2 = np.random.randn(2*3, 4)

# Display the arrays
print("Array1...\n",arr1)
print("\nArray2...\n",arr2)

# Check the Dimensions of both the arrays
print("\nDimensions of Array1...\n",arr1.ndim)
print("\nDimensions of Array2...\n",arr2.ndim)

# Check the Shape of both the arrays
print("\nShape of Array1...\n",arr1.shape)
print("\nShape of Array2...\n",arr2.shape)

# To solve the tensor equation, use the numpy.linalg.tensorsolve() method in Python.
print("\nResult...\n",np.linalg.tensorsolve(arr1, arr2))

Đầu ra

Array1...
[[[[[1. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]

[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]]


[[[0. 1. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]

[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]]


[[[0. 0. 1. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]

[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]]


[[[0. 0. 0. 1.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]

[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]]]



[[[[0. 0. 0. 0.]
[1. 0. 0. 0.]
[0. 0. 0. 0.]]

[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]]


[[[0. 0. 0. 0.]
[0. 1. 0. 0.]
[0. 0. 0. 0.]]

[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]]


[[[0. 0. 0. 0.]
[0. 0. 1. 0.]
[0. 0. 0. 0.]]

[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]]


[[[0. 0. 0. 0.]
[0. 0. 0. 1.]
[0. 0. 0. 0.]]

[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]]]



[[[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[1. 0. 0. 0.]]

[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]]


[[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 1. 0. 0.]]

[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]]


[[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 1. 0.]]

[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]]


[[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 1.]]

[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]]]



[[[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]

[[1. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]]


[[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]

[[0. 1. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]]


[[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]

[[0. 0. 1. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]]


[[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]

[[0. 0. 0. 1.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]]]



[[[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]

[[0. 0. 0. 0.]
[1. 0. 0. 0.]
[0. 0. 0. 0.]]]


[[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]

[[0. 0. 0. 0.]
[0. 1. 0. 0.]
[0. 0. 0. 0.]]]


[[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]

[[0. 0. 0. 0.]
[0. 0. 1. 0.]
[0. 0. 0. 0.]]]


[[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]

[[0. 0. 0. 0.]
[0. 0. 0. 1.]
[0. 0. 0. 0.]]]]



[[[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]

[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[1. 0. 0. 0.]]]


[[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]

[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 1. 0. 0.]]]


[[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]

[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 1. 0.]]]


[[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]

[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 1.]]]]]

Array2...
[[ 0.31376716 0.63443741 0.58628101 0.62313096]
[ 1.12528958 -1.18403238 -0.64663325 -0.24241201]
[ 0.55598965 -2.00059925 -1.97946414 -1.72478953]
[ 0.18976226 0.60572953 1.50157692 -2.4491463 ]
[ 0.42461806 -2.17872016 0.49677904 -1.11634625]
[-1.09074462 0.35475618 0.42474987 -1.34391368]]

Dimensions of Array1...
5

Dimensions of Array2...
2

Shape of Array1...
(6, 4, 2, 3, 4)

Shape of Array2...
(6, 4)

Result...
[[[ 0.31376716 0.63443741 0.58628101 0.62313096]
[ 1.12528958 -1.18403238 -0.64663325 -0.24241201]
[ 0.55598965 -2.00059925 -1.97946414 -1.72478953]]

[[ 0.18976226 0.60572953 1.50157692 -2.4491463 ]
[ 0.42461806 -2.17872016 0.49677904 -1.11634625]
[-1.09074462 0.35475618 0.42474987 -1.34391368]]]