可微編程
編輯可微編程為編程范例,其中一數字計算機程序可以區分整個經由自動分化。這允許對程序中的參數進行基于梯度的優化,通常通過梯度下降。可微分編程已在廣泛的領域中得到應用,尤其是科學計算和人工智能。
可微編程方法
編輯大多數可微編程框架通過構建一個包含程序中的控制流和數據結構的圖來工作。早期的嘗試通常分為兩類:
- 基于靜態、編譯圖的方法,例如TensorFlow、[注1]Theano和MXNet。它們傾向于允許良好的編譯器優化和更容易擴展到大型系統,但它們的靜態特性限制了交互性和可以輕松創建的程序類型(例如那些涉及循環或遞歸的程序),并且使用戶更難推理有效地了解他們的計劃。
- 運算符重載、基于動態圖的方法,例如PyTorch和AutoGrad。它們的動態和交互性質使大多數程序的編寫和推理更加容易。但是,它們會導致解釋器開銷(尤其是在組合許多小操作時)、較差的可擴展性,并且難以從編譯器優化中獲益。
這兩種早期方法都只能區分以適合框架的方式編寫的代碼,限制了它們與其他程序的互操作性。
Julia編程語言的一個更新包——Zygote——通過將語言的語法視為圖形來解決早期嘗試面臨的問題。然后可以直接區分、優化和編譯任意代碼的中間表示。
一種名為Myia的編程語言“目前正在開發中,尚未準備好使用”,它允許使用編譯為Myia的Python子集來定義模型。
可微編程的應用
編輯可微編程已經在領域得到了應用,例如結合深度學習與物理引擎中的機器人,解決與可微電子結構問題密度泛函理論,可微光線跟蹤,圖像處理,以及概率性編程。
內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/126323/