Pythonは最も急な降下方法を実装します

この記事の例では、参照用に最速の降下方法を実現するためにpythonの特定のコードを共有しています。具体的な内容は次のとおりです。

コード:

from sympy import*import numpy as np
def backtracking_line_search(f,df,x,x_k,p_k,alpha0):
 rho=0.5
 c=10**-4
 alpha=alpha0
 replacements1=zip(x,x_k)
 replacements2=zip(x,x_k+alpha*p_k)
 f_k=f.subs(replacements1)
 df_p=np.dot([df_.subs(replacements1)for df_ in df],p_k)while f.subs(replacements2) f_k+c*alpha*df_p:
 alpha=rho*alpha
 replacements2 =zip(x, x_k +alpha * p_k)return alpha
def stepest_line_search(f,x,x0,alpha0):
 df =[diff(f, x_)for x_ in x]
 x_k=x0
 alpha=alpha0
 replacements=zip(x,x_k)
 len_df =sqrt(np.sum([df_.subs(replacements)**2for df_ in df]))while len_df 1e-6:
 p_k=-1*np.array([df_.subs(replacements)for df_ in df])
 alpha =backtracking_line_search(f, df, x, x_k, p_k, alpha)
 x_k=x_k+alpha*p_k
 replacements =zip(x, x_k)
 len_df=np.sum([df_.subs(replacements)**2for df_ in df])return x_k
if __name__=="__main__":init_printing(use_unicode=True)
 x1 =symbols("x1")
 x2 =symbols("x2")
 x = np.array([x1, x2])
 f =100*(x2 - x1 **2)**2+(1- x1)**2
 ans=stepest_line_search(f, x, np.array([1.2,1]),1)
 print "the minimal value in point:",ans

分析:

これは、バックトラッキングライン検索を使用してアルファを見つけます。

以上が本稿の内容ですので、皆様のご勉強に役立てていただければ幸いです。

Recommended Posts

Pythonは最も急な降下方法を実装します
Pythonは勾配降下法を実装しています
Pythonは実店舗のゲームを実装しています
Pythonがメール機能を実装する方法
Pythonは単にスネークゲームを実装します
Python3はシングルトンデザインパターンを実装しています
Pythonは実際の銀行システムを実装しています
Pythonがタイマー機能を実装する方法
Pythonは航空機戦争プロジェクトを実装します
pythonを実行するメソッドを終了します
Pythonは分数シーケンスの合計を実装します
pythonインスタンス化オブジェクトの特定のメソッド
pythonインポートライブラリの特定の方法
python3は単に結合された設計パターンを実装します
2.1 Pythonインタープリター(pythonインタープリター)
PythonはDoudizhuでカードのシャッフルを実装します
Pythonはスネークゲームのソースコードを実装しています
Pythonマジックメソッドのトピック
Pythonはスーパーマリオを実装しています
Pythonはtic-tac-toeゲームを実装しています
Python3.7デバッグサンプルメソッド
Pythonはtic-tac-toeゲームを実装しています
Pythonはマンマシンゴバンを実装します
PythonはTetrisゲームを実装しています
Pythonは画像スティッチングを実装しています
Python関数-辞書get()メソッド
Pythonはminesweeperゲームを実装しています
Pythonはスキャンツールを実装しています
Pythonの基盤を統合する(2)
Pythonエラー処理方法
Pythonはしきい値回帰を実装します
Pythonは地雷除去ゲームを実装しています
Pythonは電子辞書を実装しています
Pythonは推測ゲームを実装しています
Pythonは関数メソッドを定義します
Pythonの基盤を統合する(4)
Pythonは単純なタンクバトルを実装します
Python(7)の基盤を統合する
Pythonはudpチャットウィンドウを実装します
PythonTCPパケットインジェクション方式
pythonはゲームという言葉を推測します
PythonはWeChat飛行機ゲームを実装しています
Pythonは単語推測ゲームを実装しています
Pythonは推測ゲームを実装しています
Ubuntuは最新のPython3をインストールします。
Python描画リンググラフ法
Pythonは駐車場管理システムを実現
Pythonはデジタル爆弾ゲームを実装しています
情報メソッドを除くPython追跡
PythonはTCPファイル転送を実装します
Pythonは推測ゲームを実現します
Python拡張機能の違い
OpenCVPythonはパズルゲームを実装しています
Pythonは単純なtic-tac-toeゲームを実装しています
Python(5)の基盤を統合する
Pythonは車の管理システムを実装しています
Pythonはコードブロックフォールディングを実装します
Pythonはパノラマ画像スティッチングを実装しています
PythonはSMTPメール送信を実装します
Pythonは多次元配列ソートを実装しています
PythonがFTP機能を実装する方法