In diesem Artikel werde ich eine Fortsetzung des vorherigen Artikels "Python-Anfänger berühren Pytorch (1)" schreiben.
y = 3x \\
\\
y = 3x\\
y = x^2+3x+4
In der obigen Funktion beträgt die Steigung "3" </ font>. Dies liegt daran, dass wenn Sie x in einer zweidimensionalen Ebene um "1" erhöhen, y um "3" erhöht wird. Die Steigung kann als Änderungsbetrag im Diagramm bezeichnet werden. Es wird leichter zu verstehen sein, wenn Sie sich die Grafik vorstellen können, die Sie in der Grundschule gelernt haben. 1-2. Neigung, wenn mehr als eine Variable </ h2> Früher gab es eine Variable pro Funktion. Eine Variable bedeutet, dass nur ein Zeichen am Ergebnis der Funktion beteiligt ist. Schauen wir uns das folgende Beispiel an. Die obigen Funktionen sind alle Funktionen mit einer Variablen. Was für eine Funktion ist eine Funktion mit zwei oder mehr Variablen?
y = x_1+2x_2+3x_3
Die obige Funktion ist eine Funktion mit zwei Variablen. Der große Unterschied zu einer Funktion mit einer Variablen besteht in der Anzahl der Variablen. Es gibt 2 Typen und 3 Arten von Variablen, die in der Funktion x genannt werden.
Berücksichtigen Sie bei Funktionen mit zwei oder mehr Variablen die Steigung für jede Variable. Deshalb,
x_Neigung um 1= 1\\x_Neige ungefähr 2= 2\\x_Neige ungefähr 3= 3
Es sieht aus wie.
Sie können sehen, dass sich der Ausdrucksbereich der Funktion aufgrund der Zunahme der Neigungsarten erweitert hat. (Die Breite des Ausdrucks ist die Anzahl der Variationen der Antwort "y".)
Das neuronale Netzwerk verwendet viele Variablen, um komplexe Funktionen und Funktionen als Diskriminator auszudrücken.
Ich werde die detaillierte Beziehung zwischen Funktionen und Variablen weglassen. Interessenten werden ermutigt, sich intensiv mit Büchern und zuverlässigen Websites zu beschäftigen.
y = x^2 + x\\
\\
y' = 2x + 1
y'means different. Die Differenzierung der obigen Gleichung ergibt die folgende Gleichung. Ich werde das Grundprinzip erklären. Die Differenzierungsregeln, wenn x eine Variable ist, werden unten beschrieben.
y = ax^n \hspace{5mm} \rightarrow \hspace{5mm} y' = nax^{n-1} \\
y = x \hspace{5mm} \rightarrow \hspace{5mm} y' = 1
Wenn Sie dies verstehen, gibt es diesmal kein Problem.
Dies ist wirklich die Grundlage der Grundlage für die Differenzierung. Differenzierungen, die hier nicht eingeführt werden können, wie komplizierte Differenzierungsmethoden, Dreiecksfunktionen und Logarithmen, sind hier
Link: Schöne Geschichte der Mathematik der High School Differentialformelliste (von der Grundausbildung bis zur Entwicklung)
Bei quadratischen Funktionen und höher können Sie auch die Steigung überprüfen, die sich auf einen bestimmten Punkt der Funktion konzentriert.
Beispiel) \hspace{1mm} y=x^2 + 3 \hspace{5mm} \rightarrow \hspace{5mm} y' = 2x \hspace{2mm}(Differential)\\
x=Neigung um 1\hspace{3mm}y` =2 ・ 1=2\\
x=Neigung um 2\hspace{3mm}y` ==4
Wenn Sie das oben Genannte verstehen können, ist dieser Artikel leicht zu verstehen.
y = 3x
Wird durch Pytorch differenziert und die Steigung 3 berechnet.
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
Fügen Sie beim Umgang mit Differenzierung "require_grad = True" hinzu, wenn Sie die Variable deklarieren, die Sie differenzieren möchten. Dies ist der Code, der eine Differenzierung ermöglicht. Wenn der Inhalt der zur Unterscheidung verwendeten Variablen ein ganzzahliger Typ ist, tritt ein Fehler auf. Deklarieren Sie es als Gleitkommatyp. </ font>
Ergebnis
tensor([[3., 3., 3.],
[3., 3., 3.],
[3., 3., 3.]], grad_fn=<MulBackward0>)
Stellen Sie sicher, dass die Anweisung "grad_fn =" zur Ausgabe hinzugefügt wird.
Hier sind einige Dinge zu beachten, wenn Sie differenzieren. In Pytorch muss bei der Differenzierung eindimensional sein. Da es sich um </ font> handelt, werden alle Tensoren in einem zusammengefasst.
python
y = torch.sum(y)
torch.sum () wurde im vorherigen Artikel eingeführt. Bitte beachten Sie den vorherigen Artikel. Python-Anfänger berühren Pytorch (1)
Wir werden endlich differenzieren.
python
y.backward()
print(x.grad)
.backward () ist eine notwendige Vorbereitung für die Differenzierung. Wenn Sie .backward () ausführen, tritt außerdem ein Fehler auf, wenn die zu differenzierende Variable nicht eindimensional ist.
Mal sehen, das Ergebnis
Ergebnis
tensor([[3., 3., 3.],
[3., 3., 3.],
[3., 3., 3.]])
Ich konnte Differentialberechnungen fest durchführen und das Ergebnis war, dass die Steigung "3" war.
out = x + 2y + 3z\\
\\
Neige um x= 1\\
Neige dich um y= 2\\
Neigung um z= 3
Wir werden mit Pytorch rechnen.
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('Neige um x')
print(x.grad)
print('Neige dich um y')
print(y.grad)
print('Neigung um z')
print(z.grad)
Ergebnis
Neige um x
tensor([[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]])
Neige dich um y
tensor([[2., 2., 2.],
[2., 2., 2.],
[2., 2., 2.]])
Neigung um 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}(Differential)\\
x=Neigung um 1\hspace{3mm}y` =2 ・ 1=2\\
x=Neigung um 2\hspace{3mm}y` =2 ・ 2=4
Wir werden dies mit Pytorch berechnen.
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 =Neigung um 1")
print(x1.grad)
out2.backward()
print("x =Neigung um 2")
print(x2.grad)
Ergebnis
x =Neigung um 1
tensor([[2., 2., 2.],
[2., 2., 2.],
[2., 2., 2.]])
x =Neigung um 2
tensor([[4., 4., 4.],
[4., 4., 4.],
[4., 4., 4.]])
Sie können es gut berechnen.
Recommended Posts