Class DoubleMatrix

java.lang.Object
schule.ngb.zm.ml.DoubleMatrix
All Implemented Interfaces:
MLMatrix

public final class DoubleMatrix extends Object implements MLMatrix
Eine einfache Implementierung der MLMatrix zur Verwendung in NeuralNetworks.

Diese Klasse stellt die interne Implementierung der Matrixoperationen dar, die zur Berechnung der Gewichte in einem NeuronLayer notwendig sind.

Die Klasse ist nur minimal optimiert und sollte nur für kleine Netze verwendet werden. Für größere Netze sollte auf eine der optionalen Bibliotheken wie Colt zurückgegriffen werden.

  • Constructor Details

    • DoubleMatrix

      public DoubleMatrix(int rows, int cols)
    • DoubleMatrix

      public DoubleMatrix(double[][] coefficients)
    • DoubleMatrix

      public DoubleMatrix(DoubleMatrix other)
      Initialisiert diese Matrix als Kopie der angegebenen Matrix.
      Parameters:
      other - Die zu kopierende Matrix.
  • Method Details

    • columns

      public int columns()
      Description copied from interface: MLMatrix
      Die Anzahl der Spalten der Matrix.
      Specified by:
      columns in interface MLMatrix
      Returns:
      Spaltenzahl.
    • rows

      public int rows()
      Description copied from interface: MLMatrix
      Die Anzahl der Zeilen der Matrix.
      Specified by:
      rows in interface MLMatrix
      Returns:
      Zeilenzahl.
    • get

      public double get(int row, int col)
      Description copied from interface: MLMatrix
      Gibt den Wert an der angegebenen Stelle der Matrix zurück.
      Specified by:
      get in interface MLMatrix
      Parameters:
      row - Die Spaltennummer zwischen 0 und rows()-1.
      col - Die Zeilennummer zwischen 0 und columns()-1
      Returns:
      Den Koeffizienten in der Zeile row und der Spalte col.
    • set

      public MLMatrix set(int row, int col, double value)
      Description copied from interface: MLMatrix
      Setzt den Wert an der angegebenen Stelle der Matrix.
      Specified by:
      set in interface MLMatrix
      Parameters:
      row - Die Spaltennummer zwischen 0 und rows()-1.
      col - Die Zeilennummer zwischen 0 und columns()-1
      value - Der neue Wert.
      Returns:
      Diese Matrix selbst (method chaining).
    • initializeRandom

      public MLMatrix initializeRandom()
      Description copied from interface: MLMatrix
      Setzt jeden Wert in der Matrix auf eine Zufallszahl zwischen -1 und 1.

      Nach Möglichkeit sollte der Zufallsgenerator der Zeichenmaschine verwendet werden.

      Specified by:
      initializeRandom in interface MLMatrix
      Returns:
      Diese Matrix selbst (method chaining).
    • initializeRandom

      public MLMatrix initializeRandom(double lower, double upper)
      Description copied from interface: MLMatrix
      Setzt jeden Wert in der Matrix auf eine Zufallszahl innerhalb der angegebenen Grenzen.

      Nach Möglichkeit sollte der Zufallsgenerator der Zeichenmaschine verwendet werden.

      Specified by:
      initializeRandom in interface MLMatrix
      Parameters:
      lower - Untere Grenze der Zufallszahlen.
      upper - Obere Grenze der Zufallszahlen.
      Returns:
      Diese Matrix selbst (method chaining).
    • initializeOne

      public MLMatrix initializeOne()
      Description copied from interface: MLMatrix
      Setzt alle Werte der Matrix auf 1.
      Specified by:
      initializeOne in interface MLMatrix
      Returns:
      Diese Matrix selbst (method chaining).
    • initializeZero

      public MLMatrix initializeZero()
      Description copied from interface: MLMatrix
      Setzt alle Werte der Matrix auf 0.
      Specified by:
      initializeZero in interface MLMatrix
      Returns:
      Diese Matrix selbst (method chaining).
    • duplicate

      public MLMatrix duplicate()
      Description copied from interface: MLMatrix
      Erzeugt eine neue Matrix mit denselben Dimensionen und Koeffizienten wie diese Matrix.
      Specified by:
      duplicate in interface MLMatrix
      Returns:
      Eine Kopie dieser Matrix.
    • multiplyTransposed

      public MLMatrix multiplyTransposed(MLMatrix B)
      Description copied from interface: MLMatrix
      Erzeugt eine neue Matrix C mit dem Ergebnis der Matrixoperation
       C = this . t(B)
       
      wobei this dieses Matrixobjekt ist, t(B) die Transposition der Matrix B 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.

      Specified by:
      multiplyTransposed in interface MLMatrix
      Parameters:
      B - Eine m x columns() Matrix.
      Returns:
      Eine rows() x m Matrix.
    • multiplyAddBias

      public MLMatrix multiplyAddBias(MLMatrix B, MLMatrix C)
      Description copied from interface: MLMatrix
      Erzeugt eine neue Matrix C mit dem Ergebnis der Matrixoperation
       C = this . B + V'
       
      wobei this dieses Matrixobjekt ist und . für die Matrixmultiplikation steht. V' ist die Matrix V rows()-mal untereinander wiederholt.

      Wenn diese Matrix die Dimension r x c hat, dann muss die Matrix B die Dimension c x m haben und V eine 1 x m Matrix sein. Die Matrix V' hat also die Dimension r x m, ebenso wie das Ergebnis der Operation.

      Specified by:
      multiplyAddBias in interface MLMatrix
      Parameters:
      B - Eine columns() x m Matrix mit der Multipliziert wird.
      C - Eine 1 x B.columns() Matrix mit den Bias-Werten.
      Returns:
      Eine rows() x m Matrix.
    • transposedMultiplyAndScale

      public MLMatrix transposedMultiplyAndScale(MLMatrix B, double scalar)
      Description copied from interface: MLMatrix
      Erzeugt eine neue Matrix C mit dem Ergebnis der Matrixoperation
       C = t(this) . B * scalar
       
      wobei this 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 mit scalar 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.

      Specified by:
      transposedMultiplyAndScale in interface MLMatrix
      Parameters:
      B - Eine m x columns() Matrix.
      Returns:
      Eine rows() x m Matrix.
    • add

      public MLMatrix add(MLMatrix B)
      Description copied from interface: MLMatrix
      Erzeugt eine neue Matrix C mit dem Ergebnis der komponentenweisen Matrix-Addition
       C = this + B
       
      wobei this dieses Matrixobjekt ist. Für ein Element C_ij in C gilt
       C_ij = A_ij + B_ij
       

      Die Matrix B muss dieselbe Dimension wie diese Matrix haben.

      Specified by:
      add in interface MLMatrix
      Parameters:
      B - Eine rows() x columns() Matrix.
      Returns:
      Eine rows() x columns() Matrix.
    • addInPlace

      public MLMatrix addInPlace(MLMatrix B)
      Description copied from interface: MLMatrix
      Setzt diese Matrix auf das Ergebnis der komponentenweisen Matrix-Addition
       A' = A + B
       
      wobei A dieses Matrixobjekt ist und A' diese Matrix nach der Operation. Für ein Element A'_ij in A' gilt
       A'_ij = A_ij + B_ij
       

      Die Matrix B muss dieselbe Dimension wie diese Matrix haben.

      Specified by:
      addInPlace in interface MLMatrix
      Parameters:
      B - Eine rows() x columns() Matrix.
      Returns:
      Eine rows() x columns() Matrix.
    • sub

      public MLMatrix sub(MLMatrix B)
      Description copied from interface: MLMatrix
      Erzeugt eine neue Matrix C mit dem Ergebnis der komponentenweisen Matrix-Subtraktion
       C = A - B
       
      wobei A dieses Matrixobjekt ist. Für ein Element C_ij in C gilt
       C_ij = A_ij - B_ij
       

      Die Matrix B muss dieselbe Dimension wie diese Matrix haben.

      Specified by:
      sub in interface MLMatrix
      Parameters:
      B - Eine rows() x columns() Matrix.
      Returns:
      Eine rows() x columns() Matrix.
    • colSums

      public MLMatrix colSums()
      Description copied from interface: MLMatrix
      Berechnet eine neue Matrix mit nur einer Zeile, die die Spaltensummen dieser Matrix enthalten.
      Specified by:
      colSums in interface MLMatrix
      Returns:
      Eine 1 x columns() Matrix.
    • scaleInPlace

      public MLMatrix scaleInPlace(double scalar)
      Description copied from interface: MLMatrix
      Multipliziert jeden Wert dieser Matrix mit dem angegebenen Skalar.

      Ist A dieses Matrixobjekt und A' diese Matrix nach der Operation, dann gilt für ein Element A'_ij in A'

       A'_ij = A_ij * scalar
       
      Specified by:
      scaleInPlace in interface MLMatrix
      Parameters:
      scalar - Ein Skalar.
      Returns:
      Diese Matrix selbst (method chaining)
    • scaleInPlace

      public MLMatrix scaleInPlace(MLMatrix S)
      Description copied from interface: MLMatrix
      Multipliziert jeden Wert dieser Matrix mit dem entsprechenden Wert in der Matrix S.

      Ist A dieses Matrixobjekt und A' diese Matrix nach der Operation, dann gilt für ein Element A'_ij in A'

       A'_ij = A_ij * S_ij
       
      Specified by:
      scaleInPlace in interface MLMatrix
      Parameters:
      S - Eine rows() x columns() Matrix.
      Returns:
      Diese Matrix selbst (method chaining)
    • apply

      public MLMatrix apply(DoubleUnaryOperator op)
      Description copied from interface: MLMatrix
      Erzeugt eine neue Matrix, deren Werte gleich den Werten dieser Matrix nach der Anwendung der angegebenen Funktion sind.
      Specified by:
      apply in interface MLMatrix
      Parameters:
      op - Eine Operation (double) -> double.
      Returns:
      Eine rows() x columns() Matrix.
    • applyInPlace

      public MLMatrix applyInPlace(DoubleUnaryOperator op)
      Description copied from interface: MLMatrix
      Endet die gegebene Funktion auf jeden Wert der Matrix an.
      Specified by:
      applyInPlace in interface MLMatrix
      Parameters:
      op - Eine Operation (double) -> double.
      Returns:
      Diese Matrix selbst (method chaining)
    • toString

      public String toString()
      Specified by:
      toString in interface MLMatrix
      Overrides:
      toString in class Object