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)