Als ich Mathematik studierte, kam das Wort "inneres Produkt" auf. Ich habe untersucht, wie dieses "innere Produkt" in einem neuronalen Netzwerk verwendet wird. Das innere Produkt ist das Produkt für den Vektor, aber das Matrixprodukt ist das Produkt für die Matrix. Das innere Produkt scheint "Punktprodukt" genannt zu werden.
Betrachten Sie das folgende zweischichtige neuronale Netzwerk.
Wenn Sie die Ausgabe des obigen neutralen Netzwerks durch die Gleichung des Matrixprodukts ersetzen, sieht dies folgendermaßen aus.
\begin{bmatrix}
w_{11} & w_{12} & w_{13}\\
w_{21} & w_{22} & w_{23}
\end{bmatrix}
\cdot
\begin{bmatrix}
x_{1} \\
x_{2} \\
x_{3} \\
\end{bmatrix}
Wenden Sie die Zahlen speziell an
\begin{bmatrix}
1 & 2 & 3\\
4 & 5 & 6
\end{bmatrix}
\cdot
\begin{bmatrix}
1 \\
2 \\
3 \\
\end{bmatrix}
Wenn Sie von Hand rechnen
\begin{bmatrix}
1 \times 1 + 2 \times 2 + 3 \times 3 \\
4 \times 1 + 5 \times 2 + 6 \times 3 \\
\end{bmatrix}
=
\begin{bmatrix}
14 \\
32 \\
\end{bmatrix}
import numpy as np
w = np.array([[1,2,3],[4,5,6]])
x = np.array([[1],[2],[3]])
w.dot(x) #=> array([[14],[32]])
w.dot (x)
repräsentiert das Matrixprodukt von w und x.
Übrigens wird der Methodenname von "dot product" in "dot" geändert.
import tensorflow as tf
w = tf.get_variable("weight" , initializer=tf.constant(np.array([[1,2,3],[4,5,6]]).astype("int32")))
x = tf.get_variable("x" , initializer=tf.constant(np.array([[1],[2],[3]]).astype("int32")))
Sitzungsinitialisierung
init = tf.initialize_all_variables()
sess = tf.Session()
sess.run(init)
sess.run(tf.matmul(w, x)) #=> array([[14],[32]])
tf.matmul (w, x) repräsentiert das Matrixprodukt von w und x. Übrigens ist der Methodenname "matmul" aus "Matrixmultiplikation".
Recommended Posts