前提・実現したいこと
Pythonで降下勾配法を実装しようとしています。学習過程を描画するために学習途中のxをリストとしてほしいです。
発生している問題
リストの中身がすべて100回学習を終えたxの値になってしまっています。
該当のソースコード
Python
1 2・・・省略・・・ 3 4#fは配列xを引数とし、数値を返す関数 5 6def gradient_descent(f, x_init,lr=0.01, step_num=100): 7 x=x_init 8 x_list=[] 9 # 繰り返し試行 10 for i in range(step_num): 11 # 勾配を計算 12 grad = numerical_gradient(f, x) 13 print(x) 14 x_list.append(x) 15 x -= lr * grad 16 17 18 return x,x_list 19 20a,b=gradient_descent(f, x_init) 21print(b)
試したこと
for文の中にprint(x)を入れて確認してみたところ私が欲しい結果が得られていました。
つまり、
[x]
[(1回更新したx)]
[(2回更新したx)]
・
・
・
[(100回更新したx)]
のように表示されました。
補足情報(FW/ツールのバージョンなど)
Atom
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/01/26 05:18