お世話になります
Pythonで計算を行った際に、理想の結果とならず
何故、そうなるのかもよく分かりません
以下は、x[0]^2 + x[1]^2という関数に対して
x[0],x[1]に任意の数値を代入して、その地点での各々の傾きを求めるコードです
コード下部のように、引数に整数値を入れると理想的でない結果が
引数に実数値を入れると理想の結果が得られます。
関数内部で暗黙的なキャストが出来てないとか、引数の指定が悪い事は分かるのですが
何故、整数を指定した場合にエラーではなく[15000 15000]という結果が得られるのかが分かりません。
どのような理由でこの数値になるのでしょうか?
初歩的で恐縮ですが、詳しい方アドバイス頂けましたら幸いです。
Python3
1def func_2(x): 2 return np.sum(x**2) 3 4def numerical_gradient(f,x): 5 h = 1e-4#0.0001 6 grad = np.zeros_like(x) 7 8 for idx in range(x.size): 9 tmp_val = x[idx] 10 #f(x + h)計算 11 x[idx] = tmp_val + h 12 fxh1 = f(x) 13 14 #f(x - h)計算 15 x[idx] = tmp_val - h 16 fxh2 = f(x) 17 18 grad[idx] = (fxh1 - fxh2) / (2 * h) 19 x[idx] = tmp_val 20 21 return grad 22 23#理想の出力が得られる 出力( [-4 -4]) 24numerical_gradient(func_2,np.array([-2.0,-2.0]) 25 26#理想の出力が得られない 出力( [15000 15000]) 27numerical_gradient(func_2,np.array([-2,-2]) 28
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/25 05:24