Pytorchの勾配の解を理解するには、まずPytorchの計算グラフの概念を理解する必要があります。計算グラフでは、各変数はノードを表し、各ノードはニューロンを表すことができます。ノード内の変数の勾配を解くために、行列があるとします。
1.、2.、3 。
4.、5、6。
まず、この行列(2次元テンソル)をPytorchで初期化し、それを計算グラフのノードに配置します。Pytorchでは、ノードはVariableで表されるため、次のコードを記述できます。
インポートトーチ から torch.autograd インポート可変 #我々はむしろ標準量よりも2次元テンソル(すなわちマトリックス)を作成しているので、エラー #ベクター(またはテンソル)にのみスカラースカラーまたはスカラー解決が部分Pytorch可能で微分 x =変数(torch.Tensor([[1.、2.、3.]、[4.、5.、6.]])、requires_grad = True)
ノード間では、requires_gradのパラメーターがあり、システムのデフォルトはFalseです。つまり、変数の勾配は解決できませんが、内部の変数の勾配が必要なので、パラメーター全体にTrueと名前を付ける必要があります。
最後に、xに関する式を他の変数に書き込みます。
y = 2 * x * x + 2
j = y.mean()
このようにして、Pytorchで表現された平均の平均値はスカラーからスカラーへ、またはスカラーからテンソルへの偏微分のみを解くことができるので、スカラーであるjの値が取得されます。
これで計算グラフモデルが作成されました。モデル全体でノードは1つしかありません。他の表現はニューロンの重みに相当し、Jは損失関数を表します。 jの勾配を解くためのコードは次のとおりです。
j.backward()
次に、勾配が解かれ、jに関するxの勾配の値が出力されます。次のパラメーターx.gradは、解かれたxの勾配の大きさを表します。
print(" xの勾配は:"、x.grad)
出力:
xの勾配は次のとおりです。
テンソル([[0.6667、1.3333、2.0000 ]、 [ 2.6667、3.3333、4.0000]]
わかりました!