PyTorch ::テンソル上で導関数を実行する
7440 ワード
皆さんこんにちは.
特に数学から恐れている人々に
ここでは、PyTorchを使用してテンソルの派生物を実行する方法を学びます.私はあなたを教えてみましょう、一度学びます、それはあなたのために楽しいでしょう.
基本的に、導関数はニューラルネットワークのパラメータを生成するために使用される.今の場合は、誘導体の基礎を学びます.
関数があるとします
f ( x ) = x 2 f ( x )= x ^ 2 f ( x )= x 2
したがって、微積分によると
f ( x ) f ( x ) f ( x )
であろう
df ( x ) x = 2 x 1\frac { d f ( x )}{ x }= 2 x ^ 1 xdf ( x )=2 x 1
どうやってこれを行うことができますか
それについてより多くを読んでください:https://medium.com/@alfonsollanes/why-do-we-use-the-derivatives-of-activation-functions-in-a-neural-network-563f2886f2ab
浮動小数点型のテンソルだけがグラデーションを必要とすることができます
詳細については、この素晴らしい記事を読むことができます:https://towardsdatascience.com/pytorch-autograd-understanding-the-heart-of-pytorchs-magic-2686cd94ec95
また、あなたはPytorchのウェブサイトのAutoGradについて公式ドキュメンテーションを読むことができます
上を進みましょう
X 2 X ^ 2 X 2
デリゲートを計算するには、https://pytorch.org/docs/stable/notes/autograd.htmlメソッドを呼び出す必要があります.
そして、葉テンソルの上で
f ( x ) = sin( x 22 ) f ( x ) =\sin (\frac { x }{ 2\sqrt 2 })
f ( x )= sin ( 22 )X)
どこ
x = 100 x = 100 x = 100
あなたが分母を単純化するならば
222 sqrt 222
でしょう
2322 ^{\frac { 3 }{ 2 }} 223
また、Pytorchの部分的な導関数を計算することもできます.例えば、
F ( U , V )= UV + U 2 + V 3 F ( U , V )= UV + U ^ 2 + V ^ 3 F ( U , V )= UV + U 2 + V 3
、派生物
df ( u , v ) du = 2 u + v\frac { d f ( u , v )}{ du }= 2 u + vdudf ( u , v )=2 U + V
and
df ( u , v ) dv = 3 v 2 + u\frac { d f ( u , v )}{ dv }= 3 v ^ 2 + udvdf ( u , v )=3 V 2 + U
Phytorchを用いた部分導関数の計算
u = 2 , v = 4 u = 2 , v = 4 u = 2 , v = 4
電子メール:https://www.derivative-calculator.net/(推薦される) さえずり
ギタブ:[email protected]
Instagram :
特に数学から恐れている人々に
ここでは、PyTorchを使用してテンソルの派生物を実行する方法を学びます.私はあなたを教えてみましょう、一度学びます、それはあなたのために楽しいでしょう.
基本的に、導関数はニューラルネットワークのパラメータを生成するために使用される.今の場合は、誘導体の基礎を学びます.
関数があるとします
f ( x ) = x 2 f ( x )= x ^ 2 f ( x )= x 2
したがって、微積分によると
f ( x ) f ( x ) f ( x )
であろう
df ( x ) x = 2 x 1\frac { d f ( x )}{ x }= 2 x ^ 1 xdf ( x )=2 x 1
どうやってこれを行うことができますか
それについてより多くを読んでください:https://medium.com/@alfonsollanes/why-do-we-use-the-derivatives-of-activation-functions-in-a-neural-network-563f2886f2ab
import torch
x = torch.tensor(9.0, requires_grad=True)
print(x)
tensor(9., requires_grad=True)
今回はrequires_grad=True
を設定しています.これはPytorch AutoGoldエンジンを使ってデリバティブを計算することです.派生物は、チェーンルール(バックプロパゲーション)を使用して、ルートからリーフまでグラフ(有効にrequires_grad=True
)を追跡することによって計算されます.浮動小数点型のテンソルだけがグラデーションを必要とすることができます
詳細については、この素晴らしい記事を読むことができます:https://towardsdatascience.com/pytorch-autograd-understanding-the-heart-of-pytorchs-magic-2686cd94ec95
また、あなたはPytorchのウェブサイトのAutoGradについて公式ドキュメンテーションを読むことができます
上を進みましょう
X 2 X ^ 2 X 2
y = x**2
print(y)
tensor(81., grad_fn=<PowBackward0>)
あなたが見るならば、Pytorchはテンソルで勾配機能を付けました.デリゲートを計算するには、https://pytorch.org/docs/stable/notes/autograd.htmlメソッドを呼び出す必要があります.
そして、葉テンソルの上で
Tensor.backward()
プロパティを使用してくださいy.backward()
print(x.grad)
tensor(18.)
それはあなたに魔法のようではありませんか?別の複素方程式の導関数を計算しましょう.f ( x ) = sin( x 22 ) f ( x ) =\sin (\frac { x }{ 2\sqrt 2 })
f ( x )= sin ( 22 )X)
どこ
x = 100 x = 100 x = 100
あなたが分母を単純化するならば
222 sqrt 222
でしょう
2322 ^{\frac { 3 }{ 2 }} 223
x = torch.tensor(100., requires_grad=True)
y = torch.sin(x / (2 ** 1.5) )
print(x)
print(y)
y.backward()
print(x.grad)
tensor(100., requires_grad=True)
tensor(-0.7158, grad_fn=<SinBackward>)
tensor(-0.2469)
テストする場合は、 .grad
に行き、上記の式を入力できます.また、Pytorchの部分的な導関数を計算することもできます.例えば、
F ( U , V )= UV + U 2 + V 3 F ( U , V )= UV + U ^ 2 + V ^ 3 F ( U , V )= UV + U 2 + V 3
、派生物
df ( u , v ) du = 2 u + v\frac { d f ( u , v )}{ du }= 2 u + vdudf ( u , v )=2 U + V
and
df ( u , v ) dv = 3 v 2 + u\frac { d f ( u , v )}{ dv }= 3 v ^ 2 + udvdf ( u , v )=3 V 2 + U
Phytorchを用いた部分導関数の計算
u = 2 , v = 4 u = 2 , v = 4 u = 2 , v = 4
u = torch.tensor(2., requires_grad=True)
v = torch.tensor(4., requires_grad=True)
f = u**2 + v**3 + u*v
print(u)
print(v)
print(f)
f.backward()
print(u.grad)
print(v.grad)
tensor(2., requires_grad=True)
tensor(4., requires_grad=True)
tensor(76., grad_fn=<AddBackward0>)
tensor(8.)
tensor(50.)
あなたが疑問またはどんな考えでも以下の源を通して私に達するならばReference
この問題について(PyTorch ::テンソル上で導関数を実行する), 我々は、より多くの情報をここで見つけました https://dev.to/tbhaxor/pytorch-performing-derivatives-on-tensors-3hi5テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol