Dans cet article, j'écrirai la suite de l'article que j'ai écrit la dernière fois, "Les débutants en Python touchent Pytorch (1)".
y = 3x \\
Dans la fonction ci-dessus, la pente est "3" </ font>. En effet, si vous augmentez x de "1" dans un plan bidimensionnel, y augmente de "3".
La pente peut être considérée comme la quantité de changement dans le graphique. Il sera plus facile à comprendre si vous pouvez imaginer le graphique que vous avez appris à l'école primaire.
\\
y = 3x\\
y = x^2+3x+4
Les fonctions ci-dessus sont toutes des fonctions à une variable. Alors, quel type de fonction est une fonction avec deux variables ou plus?
y = x_1+2x_2+3x_3
La fonction ci-dessus est une fonction à deux variables. La grande différence avec une fonction à une variable est le nombre de variables. Il existe 2 types et 3 types de variables appelées x dans la fonction.
Pour les fonctions avec deux variables ou plus, considérez la pente de chaque variable. Donc,
x_Incliner environ 1= 1\\x_Incliner environ 2= 2\\x_Incliner environ 3= 3
On dirait.
Vous pouvez voir que la plage d'expression de la fonction s'est élargie en raison de l'augmentation des types d'inclinaison. (La largeur de l'expression est le nombre de variations de la réponse «y».)
Le réseau de neurones utilise de nombreuses variables pour exprimer des fonctions complexes et des fonctions en tant que discriminateur.
Je vais omettre la relation détaillée entre les fonctions et les variables. Ceux qui sont intéressés sont encouragés à étudier dur dans des livres et des sites fiables.
y = x^2 + x\\
\\
y' = 2x + 1
y 'signifie différentiel. La différenciation de l'équation ci-dessus donne l'équation suivante. J'expliquerai le principe de base. Les règles de différenciation lorsque x est une variable sont décrites ci-dessous.
y = ax^n \hspace{5mm} \rightarrow \hspace{5mm} y' = nax^{n-1} \\
y = x \hspace{5mm} \rightarrow \hspace{5mm} y' = 1
Cette fois, si vous pouvez comprendre cela, il n'y a pas de problème.
C'est vraiment le fondement du fondement de la différenciation. Les différences qui ne peuvent pas être introduites ici, telles que les méthodes de différenciation compliquées, les fonctions triangulaires et les fonctions logarithmiques, sont ici
Lien: Belle histoire de mathématiques au lycée Liste de formules différentielles (de la base au développement)
De plus, pour les fonctions quadratiques et supérieures, vous pouvez vérifier la pente en se concentrant sur un certain point de la fonction.
Exemple) \hspace{1mm} y=x^2 + 3 \hspace{5mm} \rightarrow \hspace{5mm} y' = 2x \hspace{2mm}(différentiel)\\
x=Inclinaison à 1\hspace{3mm}y` =2 ・ 1=2\\
x=Inclinaison à 2\hspace{3mm}y` =2 · 2=4
Si vous pouvez comprendre ce qui précède, il est facile de comprendre cet article.
y = 3x
Se différencie par Pytorch et la pente 3 est calculée.
python
import torch
x = torch.ones(3,3,requires_grad=True)
a = torch.tensor([[3,3,3],[3,3,3],[3,3,3]])
y = a*x
Pour la différenciation, ajoutez "requires_grad = True" lors de la déclaration de la variable que vous souhaitez différencier. C'est le code qui permet la différenciation. De plus, si le contenu de la variable utilisée pour la différenciation est de type entier, une erreur se produira. Déclarez-le comme type à virgule flottante. </ font>
résultat
tensor([[3., 3., 3.],
[3., 3., 3.],
[3., 3., 3.]], grad_fn=<MulBackward0>)
Assurez-vous que l'instruction "grad_fn =" est ajoutée à la sortie.
Voici quelques éléments à garder à l'esprit lors de la différenciation. Dans Pytorch, lors de la différenciation, doit être unidimensionnel. Puisqu'il s'agit de </ font>, tous les tenseurs sont rassemblés en un seul.
python
y = torch.sum(y)
torch.sum () a été introduit dans l'article précédent. Veuillez vous référer à l'article précédent. Les débutants en Python touchent Pytorch (1)
Nous allons enfin nous différencier.
python
y.backward()
print(x.grad)
.backward () est une préparation nécessaire lors de l'exécution de la différenciation. De plus, lors de l'exécution de .backward (), une erreur se produira si la variable différenciée n'est pas unidimensionnelle.
Voyons le résultat
résultat
tensor([[3., 3., 3.],
[3., 3., 3.],
[3., 3., 3.]])
J'ai pu effectuer des calculs différentiels fermement, et le résultat était que la pente était de "3".
out = x + 2y + 3z\\
\\
Incliner environ x= 1\\
Inclinez sur y= 2\\
Incliner environ z= 3
Nous calculerons avec Pytorch.
python
x = torch.ones((3,3),requires_grad=True)
y = torch.ones((3,3),requires_grad=True)
z = torch.ones((3,3),requires_grad=True)
out = 1*x+2*y+3*z
out = torch.sum(out)
out.backward()
print('Incliner environ x')
print(x.grad)
print('Inclinez sur y')
print(y.grad)
print('Incliner environ z')
print(z.grad)
résultat
Incliner environ x
tensor([[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]])
Inclinez sur y
tensor([[2., 2., 2.],
[2., 2., 2.],
[2., 2., 2.]])
Incliner environ z
tensor([[3., 3., 3.],
[3., 3., 3.],
[3., 3., 3.]])
\hspace{1mm} y=x^2 + 3 \hspace{5mm} \rightarrow \hspace{5mm} y' = 2x \hspace{2mm}(différentiel)\\
x=Inclinaison à 1\hspace{3mm}y` =2 ・ 1=2\\
x=Inclinaison à 2\hspace{3mm}y` =2 · 2=4
Nous calculerons cela avec Pytorch.
python
a = torch.ones(3,3)
x1 = torch.ones((3,3),requires_grad=True)
x2 = torch.tensor([[2.0,2.0,2.0],
[2.0,2.0,2.0],
[2.0,2.0,2.0]],requires_grad=True)
b = torch.tensor([[3,3,3],
[3,3,3],
[3,3,3]])
out1 = a*x1*x1+b
out2 = a*x2*x2+b
out1 = torch.sum(out1)
out2 = torch.sum(out2)
out1.backward()
print("x =Inclinaison à 1")
print(x1.grad)
out2.backward()
print("x =Inclinaison à 2")
print(x2.grad)
résultat
x =Inclinaison à 1
tensor([[2., 2., 2.],
[2., 2., 2.],
[2., 2., 2.]])
x =Inclinaison à 2
tensor([[4., 4., 4.],
[4., 4., 4.],
[4., 4., 4.]])
Vous pouvez bien le calculer.
Recommended Posts