[PYTHON] Dualität in der Funktion

Vektoren und Co-Vektoren sind gleich und ihre Rollen können vertauscht werden. Dies nennt man Dualität. Schauen wir uns ein Beispiel an. Fügen Sie die Berechnung mit NumPy hinzu.

Dies ist eine Reihe von Artikeln.

  1. Internes Produkt, das nach Schätzung zu denken ist
  2. Covector, um mit Funktion zu denken
  3. Matrix zum Denken mit Funktion
  4. Dualität in der Funktion ← Dieser Artikel
  5. Perceptron Thinking in Covector

Es wird davon ausgegangen, dass NumPy wie folgt importiert wird.

>>> from numpy import *

Dualität

Zuvor habe ich die folgende Tabellenberechnung berücksichtigt.

Produktname Stückpreis(Firma A.) Stückpreis(Firma B.) Menge Zwischensumme(Firma A.) Zwischensumme(Firma B.)
Bleistift 30 25 12 360 300
Radiergummi 50 60 10 500 600
Hinweis 150 120 5 750 600
Gesamtsumme 1,610 1,500

Um dies zu berechnen, bereiten Sie eine Matrix und einen Vektor vor.

>>> A=array([[30,50,150],[25,60,120]]).T
>>> A
array([[ 30,  25],
       [ 50,  60],
       [150, 120]])
>>> X=array([[12,10,5]]).T
>>> X
array([[12],
       [10],
       [ 5]])
A=\left(\begin{matrix} 30 & 25 \\ 50 & 60 \\ 150 & 120 \end{matrix}\right),
X=\left(\begin{matrix} 12 \\ 10 \\ 5 \end{matrix}\right)

Beachten Sie, dass es dieselbe Form wie die Tabellenberechnung hat. Wenn Sie die linke Seite umdrehen, erhalten Sie dieselbe Nummer, auch wenn Sie die Reihenfolge ändern.

>>> dot(A.T,X)
array([[1610],
       [1500]])
>>> dot(X.T,A)
array([[1610, 1500]])
A^{\top}X
=\left(\begin{matrix} 30 & 50 & 150 \\ 25 & 60 & 120 \end{matrix}\right)
 \left(\begin{matrix} 12 \\ 10 \\ 5 \end{matrix}\right)
=\left(\begin{matrix} 1610 \\ 1500 \end{matrix}\right) \\
X^{\top}A
=\left(\begin{matrix} 12 & 10 & 5 \end{matrix}\right)
 \left(\begin{matrix} 30 & 25 \\ 50 & 60 \\ 150 & 120 \end{matrix}\right)
=\left(\begin{matrix} 1610 & 1500 \end{matrix}\right) \\

Dies wird als Vertauschen der Rollen von Vektor und Covektor interpretiert. Wenn Sie einen Vektor als Argument übergeben, wird ein Vektor zurückgegeben, und wenn Sie einen Covector übergeben, wird ein Covector zurückgegeben.

Wenn das Ganze transponiert wird, wird die Reihenfolge formal umgekehrt und das Ganze einzeln transponiert.

(A^{\top}X)^{\top}=X^{\top}A

Es ähnelt dem Umkehren des Vorzeichens des Ganzen durch Subtraktion, aber die Reihenfolge wird nicht umgekehrt, wenn das Vorzeichen einzeln umgekehrt wird.

\begin{align*}
-(3-2)
&=2-3 \\
&=(-3)-(-2)
\end{align*}

Anzahl der Ein- / Ausgänge

Der Berechnungsfluss ist für Vektoren und Co-Vektoren umgekehrt.

\underbrace{GF}_{Synthetik}
=\overbrace{\left(\begin{matrix}g_1 & g_2 & g_3\end{matrix}\right)}^{Anzahl der Eingänge 3}
 \quad\scriptsize{Anzahl der Ausgänge 3}\normalsize{\Biggr\{
  \left(\begin{matrix}f_{11} & f_{12} \\ f_{21} & f_{22} \\ f_{31} & f_{32}\end{matrix}\right)} \\
\overbrace{\left(\begin{matrix}f_{11} & f_{12} & f_{13} \\ f_{21} & f_{22} & f_{23} \end{matrix}\right)}^{Anzahl der Ausgänge 3}
 \quad\scriptsize{Anzahl der Eingänge 3}\normalsize{\Biggr\{
  \left(\begin{matrix}g_1 \\ g_2 \\ g_3 \end{matrix}\right)}
=\underbrace{FG}_{Synthetik}

Wenn Sie die Anzahl der dazwischen liegenden Elemente entfernen, bleiben nur die Ein- und Ausgänge übrig.

\underbrace{1}_{Ausgabe}×\underbrace{3←3}_{Entfernung}×\underbrace{2}_{Eingang} \\
\underbrace{2}_{Eingang}×\underbrace{3→3}_{Entfernung}×\underbrace{1}_{Ausgabe}

Berechnungsablauf

Der Berechnungsfluss einschließlich Eingabe und Ausgabe wird angezeigt. Die rote Zahl steht für die Anzahl der Elemente.

図1.png 図4.png

Schematisieren Sie, indem Sie sich auf den Wert konzentrieren.

\underbrace{y}_{Ausgabe}
\xleftarrow{G}
\underbrace{\left(\begin{matrix}t_1 \\ t_2 \\ t_3\end{matrix}\right)}_{Wert in der Mitte}
\xleftarrow{F}
\underbrace{\left(\begin{matrix}x_1 \\ x_2\end{matrix}\right)}_{Eingang} \\
\underbrace{\left(\begin{matrix}x_1 & x_2\end{matrix}\right)}_{Eingang}
\xrightarrow{F}
\underbrace{\left(\begin{matrix}t_1 & t_2 & t_3\end{matrix}\right)}_{Wert in der Mitte}
\xrightarrow{G}
\underbrace{y}_{Ausgabe}

Zeichnen Sie eine Figur im Stil von Perceptron. Der Berechnungsfluss erfolgt gemäß der Matrixnotation von rechts nach links.

図2.png 図5.png

Beachten Sie die Verbindung zwischen $ t $ und $ x $. Am Beispiel von $ f_ {21} $ können wir sehen, dass die Interpretation des Index als $ 2 ← 1 $ dem Index des durch die Linie verbundenen Knotens $ t_2 ← x_1 $ entspricht. Das Schema ist wie folgt.

t_2 \xleftarrow{f_{21}} x_1 \\
x_1 \xrightarrow{f_{12}} t_2 \\

Stellen Sie sicher, dass die anderen Linien das gleiche Muster haben.

Recommended Posts

Dualität in der Funktion
Funktionen parallel ausführen
Generatorfunktion auch in JavaScript
Covector, um in Funktion zu denken
Verwenden Sie die Rückruffunktion in Python
Implementiere die Timer-Funktion im Pygame
Nichtlineare Funktionsmodellierung in Python
Zeichne die Yin-Funktion in Python
Sofortige Funktion (Lüge) in Python
Implementieren Sie die Funktion power.prop.test von R in Python
Erstellen Sie eine Benutzerauthentifizierungsfunktion in Airflow
Sortierwarnung in der Funktion pd.concat
Definition des Funktionsargumenttyps in Python
Inklusive Notation im Argument der Python-Funktion
Implementierung der Login-Funktion in Django
Schreiben Sie die AWS Lambda-Funktion in Python
Messen Sie die Ausführungszeit von Funktionen in Python
Python-Funktion ①
Vorsichtsmaßnahmen beim Beizen einer Funktion in Python
[Python] -Funktion
Nehmen Sie die logische Summe von List in Python (Zip-Funktion)
Definieren Sie benutzerdefinierte Aktionen in JupyterHub (Hook-Funktion)
In-Funktion-Funktion
Unterschied in der Ausgabe der Fensterfunktion mit gerader Länge
Rekursive Funktion
In-Funktion-Funktion
Python-Funktion ②
Funktionsüberprüfung
Die Funktion _authenticate_with_backend wurde in django auth.autenticate nicht mehr unterstützt
Zeichnen Sie in Python ein Diagramm einer quadratischen Funktion
Registrieren Sie Funktionsargumente automatisch in argparse in Python
Holen Sie sich den Aufrufer einer Funktion in Python
[Neta] Thread-sichere Sleep-Sortierfunktion in Python (Threading)
Korrigieren Sie die Argumente der in map verwendeten Funktion
Ich habe versucht, die inverse Gammafunktion in Python zu implementieren
Python Assertion-Fehler: size.width> 0 && size.height> 0 in der Funktion imshow
Wie man eine öffentliche Funktion in Pytest verspottet
dlopen () Verfolgt einen Funktionsaufruf in einer gemeinsam genutzten Bibliothek