PyTorch学習ポータル(B):Autogardは、自動で傾きを求めます

autograd PyTorchパッケージには、学ぶために、簡単なニューラルネットワークのコア部分、です。

autogradは、すべてのテンソル操作の自動差別化機能を提供する。その柔軟性は、意思決定プロセスに反映されているが、すべての反復が異なっていてもよくなるので、通ってバックプロパゲーションコードを実行することができます。

変数クラス

  • autograd.Variableこのパッケージには、コアクラスです。
  • それはカプセル化テンソル、及びテンソルの事実上すべてのサポート。
  • あなたはテンソルを呼び出すことができます完了したら.backward()機能し、それはあなたがすべての良い勾配計算を置くのに役立ちます。
  • 変数によって.data、あなたはテンソルのプロパティを取得することができます。
  • Variabeすることで.grad、あなたは勾配特性を得ることができます。

図は、変数の構成図です。

 

 

関数のカテゴリ

  • 自動で傾きを求めるために非常に重要なクラスがありますautograd.Function
  • VariableFunction一緒に構築された非環式グラフ、伝播フロントの計算という。
  • 各変数は関数の関数によって計算されている.grad_fnプロパティを。
  • ユーザによって定義された変数(計算によって得られない機能)が.grad_fnヌルです。
  • あなたは、変数の勾配を計算したい場合は、呼び出すことができます.backward()機能:
    。スカラー変数は、任意のパラメータを指定する必要はありません時間のとき1.
    2.スカラー変数が時間ないときは、同じサイズの変数でテンソルを指定する必要がgrad_output格納するために使用されます計算された勾配。

サンプルコード

  • 輸入パケット
import torch
from torch.autograd import Variable
  • 変数を作成します。
x=Variable(torch.ones(2,2),requires_grad=True) print (x) 
 
  • 変数の操作を実行します。
y=x+2
print(y)
 
  • grad_fn属性
    xは、ユーザ定義に属し、そしてyは関数発生器に属するので、そこに属性がY grad_fnとのNO x。
print (x.grad_fn)
print (y.grad_fn)
 
  • yの上の複数のオペレーション
z = y * y * 3
out = z.mean() print(z, out) 
 

グラデーション

あなたがダウンして行うには、上記のコードに従った場合は、上記で定義された変数xと計算機能を完了しました。
今、私たちが使用できるbackward()自動導出友人を。

out.backward()
print(x.grad) 

次のように計算リバース勾配:

 

 
  • アウトここではスカラーなので、ダイレクトコールは、後方()関数は、することができます。
  • アウトのような最初のテンソルの大きさによって定義されるように、配列されたときに我々は注意を払う必要がありますgrad_outputの実装.backgrad(grad_output)声明。

基本的に上記の演算処理を完了し、図バックプロパゲーション勾配確立要求は前に伝播します。

おすすめ

転載: www.cnblogs.com/jfdwd/p/11434382.html