pytorch(3)----図Autogradを計算する基本的なタイプ

pytorch 0.4バージョンの後、torch.autograd.Variableとtorch.Tensorが統合されました。

基本的な内容

1、あなたはテンソルの自動導出を作成することができ、デフォルトはfalseです。requires_gradプロパティ

2、テンソルはさらに属性:

      大学院:テンソルレコードが勾配に対応

      grad_fn:目的関数を指し、テンソルの記録動作

図3に示すように、図の計算、ルートノード、リーフノード、中間ノード、ノードがリーフであるかどうかを決定する(.is_leaf)

 

 

 

図4に示すように、リーフは、ルート.backward()関数を使用して、勾配計算ノード

サンプルコード

1、

Requires_gradプロパティに、案内頼る 
A = torch.randn(2,2&、requires_grad = TRUE)   #1 falseにデフォルト値を 
B = torch.randn(2,2& 

を印刷(a.requires_grad、b.requires_grad)
使用します。 requires_grad_()をtrueにrequires_gradセットにを= Trueのb.requires_gradと同等である
b.requires_grad_()
 印刷(b.requires_grad)

2、

テンソル2属性グラを:テンソル勾配対応する記録grad_fnを:ポインティング機能オブジェクトを、テンソルが作動されて記録

印刷(A)
 印刷(B)
C = A + B
 プリント(C)
 プリント(Cをrequires_grad)

プリント(a.grad_fn)
 プリント(b.grad_fn)
 印刷(c.grad_fn)

D = c.detach() .detach()は.DATA()と同様のデータを取得するが、前者はより安全であるために、後者はありません修正は、情報の追跡autograd 
印刷を(d)の
 印刷(d.requires_grad)

3、

算出マップ 
X torch.randn =(1 
W = torch.ones(1、requires_grad = TRUE)
B = torch.ones(1、requires_grad = TRUE)

印刷(x.is_leaf、w.is_leaf、b.is_leaf)

Y W * = X 
Z = Y + Bの
 印刷(y.is_leaf、z.is_leaf)
 プリント(y.grad_fn、z.grad_fn) 

使用.backwardルートノード()を得ることができる勾配リーフノード 
z.backward(retain_graph = 真)
 印刷(w.grad)
 印刷(b.grad)

 

おすすめ

転載: www.cnblogs.com/feihu-h/p/12305683.html