いくつかの自動微分ライブラリパイソン

いくつかの簡単な紹介パイソン自動導出ツール、正接、autograd、sympy、
  機械のさまざまな学習は、フレームの深さは、学習自動微分に含まれているので、差動4種類がある:手動微分法、数値微分、シンボル分化、自動微分いくつかの差分フレームの以下の説明では、各単純なフライ(Hello Worldのタイプ);

sympyシンボリック分化、記号式を生成することにより、導関数を使用して、強力な科学技術計算ライブラリを、関数が生成された式ツリーは非常に複雑で、より複雑である場合に得られる誘導体は、必ずしも最も簡単ではありません。

autograd自動第1の基本シンボル微分演算子の分化、および中間結果に値を、それが全体の機能に適用され、図本質的に自動微分演算は、広く様々な機械学習の学習の深さで使用される最適化の多くを行うことは容易ですフレーム;

正接ソースにソース(ソース-ソース)自動差分フレームは、新たな機能f_gradを生成することによって、彼の関数の微分の差分を算出する関数fの計算では、すべての自動差動電流フレームが異なって存在しています。これは、新たな機能の差を生成することによって計算され、従って、非常に従事可読性、公式は、現在のフレームワークと大きく異なる自動微分を言われている調節可能な抵抗を有しているからです。

sympy導出

 def grad():
     # 定义表达式的变量名称
     x, y = symbols('x y')
     # 定义表达式
     z = x**2 +y**2
     # 计算z关于y对应的偏导数
     return diff(z, y)

 func = grad()

導関数式Z、Z「= 2 * Yの出力

 print(func) 

Yは6に等しいが、計算結果12になります

 print(func.evalf(subs ={'y':3}))

Autograd偏微分

 import autograd.numpy as np
 from autograd import grad

 #表达式 f(x,y)=x^2+3xy+y^2
 #df/dx = 2x+3y
 #df/dy = 3x+2y
 #x=1,y=2
 #df/dx=8
 #df/dy=7
 def fun(x, y):
   z=x**2+3*x*y+y**2
   return z

 fun_grad = grad(fun)
 fun_grad(2.,1.)

出力:7.0

接線導出

 import tangent
 def fun(x, y):
   z=x**2+3*x*y+y**2
   return z

酒Zのデフォルトは、xに関する偏導関数であります

 dy_dx = tangent.grad(fun)

偏向器8、Z「の出力値= 2 * X、Xは、渡された値が同じです

 df(4, y=1)

偏導関数は、YからZに対して次偏導関数のために、パラメータWRTパラメータを使用して、要求に応じて指定することができ

 df = tangent.grad(funs, wrt=([1]))

出力値は10であり、xは、渡された値であり、Z「= 2 * yは、同一であります

 df(x=0, y=5)

ソース - ソース(ソース - ソース):これは、コア接線を反映していなかったので、多くを語ります

私たちの世代のために使用される導関数を計算するために正接関数を参照するために、冗長= 1が付加されたガイド関数パラメータを生成する場合、デフォルト値は0ので、我々は、他の自動微分フレームと接線導出を感じていないです違いは何ですか。

 def df(x):
     z = x**2
     return z

 df = tangent.grad(df, verbose=1)
 df(x=2)

コードが実行された後、我々は関数の導関数の接線を生成し参照してください。

  def ddfdx(x, bz=1.0):
    z = x ** 2
    assert tangent.shapes_match(z, bz), 'Shape mismatch between return value (%s) and seed derivative (%s)' % (numpy.shape(z), numpy.shape(bz))
 # Grad of: z = x ** 2
  _bx = 2 * x * bz
  bx = _bx
  return bx

  ddfdx機能は、我々は導関数ZはZ「= 2 * xの発現を確認することができ、そこから関数、として生成され、正接は、デリバティブのための機能を実行することによって計算されます。

  17年からsympy自動微分したばかりの比較的新しいリリースされた、autogradもそれは自動微分、2017グーグルの自動微分法接線駆け出しの終わりのために生まれた名前から分かるようにその強力な機能の一つである、ヘアv0.1.8バージョン髪は、ソースコードのアップデートのバージョンを見ていない後に十分有効ではありません; sympyは、より成熟したautograd、接線が見られることを残ります。

おすすめ

転載: www.cnblogs.com/softlin/p/11427390.html