Class DenseMatrix
java.lang.Object
org.tribuo.math.la.DenseMatrix
- All Implemented Interfaces:
Serializable,Iterable<MatrixTuple>,Matrix,Tensor
- Direct Known Subclasses:
ShrinkingMatrix
A dense matrix, backed by a primitive array.
- See Also:
-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionDenseMatrix(int dim1, int dim2) DenseMatrix(DenseMatrix other) DenseMatrix(Matrix other) -
Method Summary
Modifier and TypeMethodDescriptionvoidadd(int i, int j, double value) Adds the argument value to the value at the supplied index.voidaddAcrossDim1(int[] indices, double value) voidaddAcrossDim2(int[] indices, double value) voidbroadcastIntersectAndAddInPlace(SGDVector input, boolean broadcastOverDim1) Broadcasts the input vector and adds it to each row/column of the matrix.doublecolumnSum(int columnIndex) copy()Copies the matrix.static DenseMatrixcreateDenseMatrix(double[][] values) Defensively copies the values before construction.booleanvoidApplies aDoubleUnaryOperatorelementwise to thisTensor.gatherAcrossDim1(int[] elements) gatherAcrossDim2(int[] elements) doubleget(int i, int j) Gets an element from thisMatrix.getColumn(int index) intThe size of the first dimension.intThe size of the second dimension.getRow(int i) Extract a row as anSGDVector.int[]getShape()Returns an int array specifying the shape of thisTensor.voidhadamardProductInPlace(Tensor other, DoubleUnaryOperator f) Updates thisTensorwith the Hadamard product (i.e., a term by term multiply) of this andother.inthashCode()voidintersectAndAddInPlace(Tensor other, DoubleUnaryOperator f) Updates thisTensorby adding all the values from the intersection withother.iterator()leftMultiply(SGDVector input) Multiplies this Matrix by aSGDVectorreturning a vector of the appropriate size.matrixMultiply(Matrix other) Multiplies this Matrix by anotherMatrixreturning a matrix of the appropriate size.matrixMultiply(Matrix other, boolean transposeThis, boolean transposeOther) Multiplies this Matrix by anotherMatrixreturning a matrix of the appropriate size.voidnormalizeRows(VectorNormalizer normalizer) intnumActiveElements(int row) The number of non-zero elements in that row.reshape(int[] newShape) Reshapes the Tensor to the supplied shape.rightMultiply(SGDVector input) Multiplies this Matrix by aSGDVectorreturning a vector of the appropriate size.voidrowScaleInPlace(DenseVector scalingCoefficients) Scales each row by the appropriate value in theDenseVector.rowSum()Generates aDenseVectorrepresenting the sum of each row.doublerowSum(int rowIndex) voidset(int i, int j, double value) Sets an element at the supplied location.toString()doubletwoNorm()Calculates the euclidean norm for this vector.Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface java.lang.Iterable
forEach, spliteratorMethods inherited from interface org.tribuo.math.la.Tensor
hadamardProductInPlace, intersectAndAddInPlace, scalarAddInPlace, scaleInPlace
-
Field Details
-
values
-
dim1
-
dim2
-
-
Constructor Details
-
DenseMatrix
-
DenseMatrix
-
DenseMatrix
-
-
Method Details
-
createDenseMatrix
Defensively copies the values before construction.Throws IllegalArgumentException if the supplied values are a ragged array.
- Parameters:
values- The values of this dense matrix.- Returns:
- A new dense matrix.
-
getShape
-
reshape
Description copied from interface:TensorReshapes the Tensor to the supplied shape. ThrowsIllegalArgumentExceptionif the shape isn't compatible. -
copy
-
get
-
gatherAcrossDim1
-
gatherAcrossDim2
-
transpose
-
equals
-
hashCode
-
set
Description copied from interface:MatrixSets an element at the supplied location. -
getDimension1Size
Description copied from interface:MatrixThe size of the first dimension.- Specified by:
getDimension1Sizein interfaceMatrix- Returns:
- The size of the first dimension.
-
getDimension2Size
Description copied from interface:MatrixThe size of the second dimension.- Specified by:
getDimension2Sizein interfaceMatrix- Returns:
- The size of the second dimension.
-
leftMultiply
Description copied from interface:MatrixMultiplies this Matrix by aSGDVectorreturning a vector of the appropriate size.The input must have dimension equal to
Matrix.getDimension2Size().- Specified by:
leftMultiplyin interfaceMatrix- Parameters:
input- The input vector.- Returns:
- A new
SGDVectorof sizeMatrix.getDimension1Size().
-
rightMultiply
Description copied from interface:MatrixMultiplies this Matrix by aSGDVectorreturning a vector of the appropriate size.The input must have dimension equal to
Matrix.getDimension1Size().- Specified by:
rightMultiplyin interfaceMatrix- Parameters:
input- The input vector.- Returns:
- A new
SGDVectorof sizeMatrix.getDimension2Size().
-
matrixMultiply
Description copied from interface:MatrixMultiplies this Matrix by anotherMatrixreturning a matrix of the appropriate size.The input must have dimension 1 equal to
Matrix.getDimension2Size().- Specified by:
matrixMultiplyin interfaceMatrix- Parameters:
other- The input matrix.- Returns:
- A new
Matrixof sizeMatrix.getDimension1Size(),input.getDimension2Size().
-
matrixMultiply
Description copied from interface:MatrixMultiplies this Matrix by anotherMatrixreturning a matrix of the appropriate size.Must obey the rules of matrix multiplication after the transposes are applied.
- Specified by:
matrixMultiplyin interfaceMatrix- Parameters:
other- The input matrix.transposeThis- Implicitly transposes this matrix just for the multiplication.transposeOther- Implicitly transposes other just for the multiplication.- Returns:
- A new
Matrix.
-
rowSum
Description copied from interface:MatrixGenerates aDenseVectorrepresenting the sum of each row.- Specified by:
rowSumin interfaceMatrix- Returns:
- A new
DenseVectorof sizeMatrix.getDimension1Size().
-
rowScaleInPlace
Description copied from interface:MatrixScales each row by the appropriate value in theDenseVector.- Specified by:
rowScaleInPlacein interfaceMatrix- Parameters:
scalingCoefficients- ADenseVectorwith sizeMatrix.getDimension1Size().
-
add
Description copied from interface:MatrixAdds the argument value to the value at the supplied index. -
addAcrossDim1
-
addAcrossDim2
-
intersectAndAddInPlace
Description copied from interface:TensorUpdates thisTensorby adding all the values from the intersection withother.The function
fis applied to all values fromotherbefore the addition.Each value is updated as value += f(otherValue).
- Specified by:
intersectAndAddInPlacein interfaceTensor- Parameters:
other- The otherTensor.f- A function to apply.
-
hadamardProductInPlace
Description copied from interface:TensorUpdates thisTensorwith the Hadamard product (i.e., a term by term multiply) of this andother.The function
fis applied to all values fromotherbefore the addition.Each value is updated as value *= f(otherValue).
- Specified by:
hadamardProductInPlacein interfaceTensor- Parameters:
other- The otherTensor.f- A function to apply.
-
foreachInPlace
Description copied from interface:TensorApplies aDoubleUnaryOperatorelementwise to thisTensor.- Specified by:
foreachInPlacein interfaceTensor- Parameters:
f- The function to apply.
-
broadcastIntersectAndAddInPlace
Broadcasts the input vector and adds it to each row/column of the matrix.- Parameters:
input- The input vector.broadcastOverDim1- If true broadcasts over the first dimension, else broadcasts over the second.
-
numActiveElements
Description copied from interface:MatrixThe number of non-zero elements in that row.An element could be active and zero, if it was active on construction.
- Specified by:
numActiveElementsin interfaceMatrix- Parameters:
row- The index of the row.- Returns:
- The number of non-zero elements.
-
getRow
-
getColumn
-
rowSum
-
columnSum
-
twoNorm
-
toString
-
iterator
- Specified by:
iteratorin interfaceIterable<MatrixTuple>
-
normalizeRows
-
columnSum
-