Interface MLMatrix
- All Known Implementing Classes:
DoubleMatrix
NeuralNetwork Klassen verwendet
werden.
Eine implementierende Klasse muss generell zwei Konstruktoren bereitstellen:
-
MLMatrix(int rows, int columns)erstellt eine Matrix mit den angegebenen Dimensionen und setzt alle Koeffizienten auf 0. -
MLMatrix(double[][] coefficientserstellt eine Matrix mit der durch das Array gegebenen Dimensionen und setzt die Werte auf die jeweiligen Werte des Arrays.
Das Interface ist nicht dazu gedacht eine allgemeine Umsetzung für Matrizen-Algebra abzubilden, sondern soll gezielt die im Neuralen Netzwerk verwendeten Algorithmen umsetzen. Einerseits würde eine ganz allgemeine Matrizen-Klasse nicht im Rahmen der Zeichenmaschine liegen und auf der anderen Seite bietet eine Konzentration auf die verwendeten Algorithmen mehr Spielraum zur Optimierung.
Intern wird das Interface von DoubleMatrix implementiert. Die Klasse
ist eine weitestgehend naive Implementierung der Algorithmen mit kleineren
Optimierungen. Die Verwendung eines generalisierten Interfaces erlaubt aber
zukünftig die optionale Integration spezialisierterer Algebra-Bibliotheken
wie
Colt, um auch große
Netze effizient berechnen zu können.
-
Method Summary
Modifier and TypeMethodDescriptionErzeugt eine neue MatrixCmit dem Ergebnis der komponentenweisen Matrix-AdditionSetzt diese Matrix auf das Ergebnis der komponentenweisen Matrix-AdditionErzeugt eine neue Matrix, deren Werte gleich den Werten dieser Matrix nach der Anwendung der angegebenen Funktion sind.Endet die gegebene Funktion auf jeden Wert der Matrix an.colSums()Berechnet eine neue Matrix mit nur einer Zeile, die die Spaltensummen dieser Matrix enthalten.intcolumns()Die Anzahl der Spalten der Matrix.Erzeugt eine neue Matrix mit denselben Dimensionen und Koeffizienten wie diese Matrix.doubleget(int row, int col) Gibt den Wert an der angegebenen Stelle der Matrix zurück.Setzt alle Werte der Matrix auf 1.Setzt jeden Wert in der Matrix auf eine Zufallszahl zwischen -1 und 1.initializeRandom(double lower, double upper) Setzt jeden Wert in der Matrix auf eine Zufallszahl innerhalb der angegebenen Grenzen.Setzt alle Werte der Matrix auf 0.multiplyAddBias(MLMatrix B, MLMatrix V) Erzeugt eine neue MatrixCmit dem Ergebnis der MatrixoperationErzeugt eine neue MatrixCmit dem Ergebnis der Matrixoperationintrows()Die Anzahl der Zeilen der Matrix.scaleInPlace(double scalar) Multipliziert jeden Wert dieser Matrix mit dem angegebenen Skalar.Multipliziert jeden Wert dieser Matrix mit dem entsprechenden Wert in der MatrixS.set(int row, int col, double value) Setzt den Wert an der angegebenen Stelle der Matrix.Erzeugt eine neue MatrixCmit dem Ergebnis der komponentenweisen Matrix-SubtraktiontoString()transposedMultiplyAndScale(MLMatrix B, double scalar) Erzeugt eine neue MatrixCmit dem Ergebnis der Matrixoperation
-
Method Details
-
columns
int columns()Die Anzahl der Spalten der Matrix.- Returns:
- Spaltenzahl.
-
rows
int rows()Die Anzahl der Zeilen der Matrix.- Returns:
- Zeilenzahl.
-
get
Gibt den Wert an der angegebenen Stelle der Matrix zurück.- Parameters:
row- Die Spaltennummer zwischen 0 undrows()-1.col- Die Zeilennummer zwischen 0 undcolumns()-1- Returns:
- Den Koeffizienten in der Zeile
rowund der Spaltecol. - Throws:
IllegalArgumentException- Fallsrow >= rows()odercol >= columns().
-
set
Setzt den Wert an der angegebenen Stelle der Matrix.- Parameters:
row- Die Spaltennummer zwischen 0 undrows()-1.col- Die Zeilennummer zwischen 0 undcolumns()-1value- Der neue Wert.- Returns:
- Diese Matrix selbst (method chaining).
- Throws:
IllegalArgumentException- Fallsrow >= rows()odercol >= columns().
-
initializeRandom
MLMatrix initializeRandom()Setzt jeden Wert in der Matrix auf eine Zufallszahl zwischen -1 und 1.Nach Möglichkeit sollte der
Zufallsgenerator der Zeichenmaschineverwendet werden.- Returns:
- Diese Matrix selbst (method chaining).
-
initializeRandom
Setzt jeden Wert in der Matrix auf eine Zufallszahl innerhalb der angegebenen Grenzen.Nach Möglichkeit sollte der
Zufallsgenerator der Zeichenmaschineverwendet werden.- Parameters:
lower- Untere Grenze der Zufallszahlen.upper- Obere Grenze der Zufallszahlen.- Returns:
- Diese Matrix selbst (method chaining).
-
initializeOne
MLMatrix initializeOne()Setzt alle Werte der Matrix auf 1.- Returns:
- Diese Matrix selbst (method chaining).
-
initializeZero
MLMatrix initializeZero()Setzt alle Werte der Matrix auf 0.- Returns:
- Diese Matrix selbst (method chaining).
-
multiplyAddBias
Erzeugt eine neue MatrixCmit dem Ergebnis der MatrixoperationC = this . B + V'
wobeithisdieses Matrixobjekt ist und.für die Matrixmultiplikation steht.V'ist die MatrixVrows()-mal untereinander wiederholt.Wenn diese Matrix die Dimension r x c hat, dann muss die Matrix
Bdie Dimension c x m haben undVeine 1 x m Matrix sein. Die MatrixV'hat also die Dimension r x m, ebenso wie das Ergebnis der Operation.- Parameters:
B- Einecolumns()x m Matrix mit der Multipliziert wird.V- Eine 1 xB.columns()Matrix mit den Bias-Werten.- Returns:
- Eine
rows()x m Matrix. - Throws:
IllegalArgumentException- Falls die Dimensionen der Matrizen nicht zur Operation passen. Alsothis.columns() != B.rows()oderB.columns() != V.columns()oderV.rows() != 1.
-
multiplyTransposed
Erzeugt eine neue MatrixCmit dem Ergebnis der MatrixoperationC = this . t(B)
wobeithisdieses Matrixobjekt ist,t(B)die Transposition der MatrixBist und.für die Matrixmultiplikation steht.Wenn diese Matrix die Dimension r x c hat, dann muss die Matrix
Bdie Dimension m x c haben und das Ergebnis ist eine r x m Matrix.- Parameters:
B- Eine m xcolumns()Matrix.- Returns:
- Eine
rows()x m Matrix. - Throws:
IllegalArgumentException- Falls die Dimensionen der Matrizen nicht zur Operation passen. Alsothis.columns() != B.columns().
-
transposedMultiplyAndScale
Erzeugt eine neue MatrixCmit dem Ergebnis der MatrixoperationC = t(this) . B * scalar
wobeithisdieses Matrixobjekt ist,t(this)die Transposition dieser Matrix ist und.für die Matrixmultiplikation steht.*bezeichnet die Skalarmultiplikation, bei der jeder Wert der Matrix mitscalarmultipliziert wird.Wenn diese Matrix die Dimension r x c hat, dann muss die Matrix
Bdie Dimension r x m haben und das Ergebnis ist eine c x m Matrix.- Parameters:
B- Eine m xcolumns()Matrix.- Returns:
- Eine
rows()x m Matrix. - Throws:
IllegalArgumentException- Falls die Dimensionen der Matrizen nicht zur Operation passen. Alsothis.rows() != B.rows().
-
add
Erzeugt eine neue MatrixCmit dem Ergebnis der komponentenweisen Matrix-AdditionC = this + B
wobeithisdieses Matrixobjekt ist. Für ein ElementC_ijinCgiltC_ij = A_ij + B_ij
Die Matrix
Bmuss dieselbe Dimension wie diese Matrix haben.- Parameters:
B- Einerows()xcolumns()Matrix.- Returns:
- Eine
rows()xcolumns()Matrix. - Throws:
IllegalArgumentException- Falls die Dimensionen der Matrizen nicht zur Operation passen. Alsothis.rows() != B.rows()oderthis.columns() != B.columns().
-
addInPlace
Setzt diese Matrix auf das Ergebnis der komponentenweisen Matrix-AdditionA' = A + B
wobeiAdieses Matrixobjekt ist undA'diese Matrix nach der Operation. Für ein ElementA'_ijinA'giltA'_ij = A_ij + B_ij
Die Matrix
Bmuss dieselbe Dimension wie diese Matrix haben.- Parameters:
B- Einerows()xcolumns()Matrix.- Returns:
- Eine
rows()xcolumns()Matrix. - Throws:
IllegalArgumentException- Falls die Dimensionen der Matrizen nicht zur Operation passen. Alsothis.rows() != B.rows()oderthis.columns() != B.columns().
-
sub
Erzeugt eine neue MatrixCmit dem Ergebnis der komponentenweisen Matrix-SubtraktionC = A - B
wobeiAdieses Matrixobjekt ist. Für ein ElementC_ijinCgiltC_ij = A_ij - B_ij
Die Matrix
Bmuss dieselbe Dimension wie diese Matrix haben.- Parameters:
B- Einerows()xcolumns()Matrix.- Returns:
- Eine
rows()xcolumns()Matrix. - Throws:
IllegalArgumentException- Falls die Dimensionen der Matrizen nicht zur Operation passen. Alsothis.rows() != B.rows()oderthis.columns() != B.columns().
-
scaleInPlace
Multipliziert jeden Wert dieser Matrix mit dem angegebenen Skalar.Ist
Adieses Matrixobjekt undA'diese Matrix nach der Operation, dann gilt für ein ElementA'_ijinA'A'_ij = A_ij * scalar
- Parameters:
scalar- Ein Skalar.- Returns:
- Diese Matrix selbst (method chaining)
-
scaleInPlace
Multipliziert jeden Wert dieser Matrix mit dem entsprechenden Wert in der MatrixS.Ist
Adieses Matrixobjekt undA'diese Matrix nach der Operation, dann gilt für ein ElementA'_ijinA'A'_ij = A_ij * S_ij
- Parameters:
S- Einerows()xcolumns()Matrix.- Returns:
- Diese Matrix selbst (method chaining)
- Throws:
IllegalArgumentException- Falls die Dimensionen der Matrizen nicht zur Operation passen. Alsothis.rows() != B.rows()oderthis.columns() != B.columns().
-
colSums
MLMatrix colSums()Berechnet eine neue Matrix mit nur einer Zeile, die die Spaltensummen dieser Matrix enthalten.- Returns:
- Eine 1 x
columns()Matrix.
-
apply
Erzeugt eine neue Matrix, deren Werte gleich den Werten dieser Matrix nach der Anwendung der angegebenen Funktion sind.- Parameters:
op- Eine Operation(double) -> double.- Returns:
- Eine
rows()xcolumns()Matrix.
-
applyInPlace
Endet die gegebene Funktion auf jeden Wert der Matrix an.- Parameters:
op- Eine Operation(double) -> double.- Returns:
- Diese Matrix selbst (method chaining)
-
duplicate
MLMatrix duplicate()Erzeugt eine neue Matrix mit denselben Dimensionen und Koeffizienten wie diese Matrix.- Returns:
- Eine Kopie dieser Matrix.
-
toString
String toString()
-