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[][] coefficients
erstellt 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 MatrixC
mit 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.int
columns()
Die Anzahl der Spalten der Matrix.Erzeugt eine neue Matrix mit denselben Dimensionen und Koeffizienten wie diese Matrix.double
get
(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 MatrixC
mit dem Ergebnis der MatrixoperationErzeugt eine neue MatrixC
mit dem Ergebnis der Matrixoperationint
rows()
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 MatrixC
mit dem Ergebnis der komponentenweisen Matrix-SubtraktiontoString()
transposedMultiplyAndScale
(MLMatrix B, double scalar) Erzeugt eine neue MatrixC
mit 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
row
und 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()-1
value
- 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 Zeichenmaschine
verwendet 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 Zeichenmaschine
verwendet 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 MatrixC
mit dem Ergebnis der MatrixoperationC = this . B + V'
wobeithis
dieses Matrixobjekt ist und.
für die Matrixmultiplikation steht.V'
ist die MatrixV
rows()
-mal untereinander wiederholt.Wenn diese Matrix die Dimension r x c hat, dann muss die Matrix
B
die Dimension c x m haben undV
eine 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 MatrixC
mit dem Ergebnis der MatrixoperationC = this . t(B)
wobeithis
dieses Matrixobjekt ist,t(B)
die Transposition der MatrixB
ist und.
für die Matrixmultiplikation steht.Wenn diese Matrix die Dimension r x c hat, dann muss die Matrix
B
die 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 MatrixC
mit dem Ergebnis der MatrixoperationC = t(this) . B * scalar
wobeithis
dieses Matrixobjekt ist,t(this)
die Transposition dieser Matrix ist und.
für die Matrixmultiplikation steht.*
bezeichnet die Skalarmultiplikation, bei der jeder Wert der Matrix mitscalar
multipliziert wird.Wenn diese Matrix die Dimension r x c hat, dann muss die Matrix
B
die 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 MatrixC
mit dem Ergebnis der komponentenweisen Matrix-AdditionC = this + B
wobeithis
dieses Matrixobjekt ist. Für ein ElementC_ij
inC
giltC_ij = A_ij + B_ij
Die Matrix
B
muss 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
wobeiA
dieses Matrixobjekt ist undA'
diese Matrix nach der Operation. Für ein ElementA'_ij
inA'
giltA'_ij = A_ij + B_ij
Die Matrix
B
muss 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 MatrixC
mit dem Ergebnis der komponentenweisen Matrix-SubtraktionC = A - B
wobeiA
dieses Matrixobjekt ist. Für ein ElementC_ij
inC
giltC_ij = A_ij - B_ij
Die Matrix
B
muss 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
A
dieses Matrixobjekt undA'
diese Matrix nach der Operation, dann gilt für ein ElementA'_ij
inA'
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
A
dieses Matrixobjekt undA'
diese Matrix nach der Operation, dann gilt für ein ElementA'_ij
inA'
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()
-