多項式関数のヘッセ行列を計算するのに、numddifftoolsパッケージを使用しています(R^nからR^nまで)。リストの代わりにnumpy配列を使用するようにコードを変更している間に、コードを破ったことが分かりました。具体的に:Numpyとnumdifftools多次元関数
import numpy as np
import numdifftools as nd
def function(x):
out = np.zeros(2)
out[0] = x[0] - x[1]**2/2.0
return float(out[0])
tempHessian = nd.Hessian(function, method='complex')
tempHessian([0.4,0.4])
は、エラーが生成されます ... \コンティニュアム\ Anaconda3 \ libに\のsite-packages \ ipykernel_launcher.py:8:ComplexWarning:本当の破棄に虚部を複素数値をキャスト
とヘッセンがゼロになります。
しかし、これは正常に動作します:
import numpy as np
import numdifftools as nd
def function(x):
return x[0] - x[1]**2/2.0
tempHessian = nd.Hessian(function, method='complex')
tempHessian([0.4,0.4])
任意のアイデア何の問題だろうか?ありがとう! out
は、このように作成され
あなたはコード内のどの行が警告をトリガーしているかを把握してください。 warningsモジュールを使用して、警告を例外にすることができます。 https://stackoverflow.com/questions/5644836/in-python-how-does-one-catch-warnings-as-if-they-were-exceptions – ngoldbaum
問題は「浮動(out [0])」ですマトリックスを「真の」ものに変換する。 – axaroth