Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでテンソル方程式を解く


テンソル方程式を解くには、Pythonでnumpy.linalg.tensorsolve()メソッドを使用します。たとえば、tensordot(a、x、axes =b.ndim)で行われるように、xのすべてのインデックスが、aの右端のインデックスとともに積に合計されると想定されます。

最初のパラメーターaは、形状b.shape + Qの係数テンソルです。タプルであるQは、適切な数の右端のインデックスで構成されるサブテンソルの形状に等しく、prod( Q)==prod(b.shape)。 2番目のパラメーターbは右側のテンソルであり、任意の形状にすることができます。 3番目のパラメーターであるaxisは、反転前に右に並べ替えるaの軸です。 None(デフォルト)の場合、並べ替えは行われません。

ステップ

まず、必要なライブラリをインポートします-

import numpy as np

array()メソッドを使用して2つのnumpy配列を作成する

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

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

配列を表示する-

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

両方のアレイの寸法を確認してください-

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

両方のアレイの形状を確認してください-

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

テンソル方程式を解くには、Pythonでnumpy.linalg.tensorsolve()メソッドを使用します。たとえば、tensordot(a、x、axes =b.ndim)-

で行われるように、xのすべてのインデックスが、aの右端のインデックスとともに積に合計されると想定されます。
print("\nResult...\n",np.linalg.tensorsolve(arr1, arr2))

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))

出力

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]]]

  1. Pythonデバッガー(pdb)

    ソフトウェア開発の専門用語では、「デバッグ」という用語は、プログラム内のエラーを見つけて修正するプロセスに広く使用されています。 Pythonの標準ライブラリには、Pythonプログラムをデバッグするためのユーティリティのセットであるpdbモジュールが含まれています。 デバッグ機能はPdbクラスで定義されています。このモジュールは、内部でbdbモジュールとcmdモジュールを使用します。 pdbモジュールには、非常に便利なコマンドラインインターフェイスがあります。これは、Pythonスクリプトの実行時に–m switchを使用してインポートされます。 python –m pdb

  2. =+と+=はPythonで何をしますか?

    + =演算子は、object .__ iadd __()関数のシンタックスシュガーです。 Pythonドキュメントから: これらのメソッドは、拡張された算術割り当て(+ =、-=、* =、@ =、/ =、// =、%=、** =、)を実装するために呼び出されます。 =、&=、^ =、| =)。これらのメソッドは、その場で操作を実行し(自己を変更)、結果を返すようにする必要があります(自己である可能性がありますが、そうである必要はありません)。 例 だからあなたが次のようなことをするとき- a = 5 b = 10 a += b print(a) 出力 これにより、出力が得られます- 15