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 TypeMethodDescriptionvoid
add
(int i, int j, double value) Adds the argument value to the value at the supplied index.void
addAcrossDim1
(int[] indices, double value) void
addAcrossDim2
(int[] indices, double value) void
broadcastIntersectAndAddInPlace
(SGDVector input, boolean broadcastOverDim1) Broadcasts the input vector and adds it to each row/column of the matrix.double
columnSum
(int columnIndex) copy()
Copies the matrix.static DenseMatrix
createDenseMatrix
(double[][] values) Defensively copies the values before construction.boolean
void
Applies aDoubleUnaryOperator
elementwise to thisTensor
.gatherAcrossDim1
(int[] elements) gatherAcrossDim2
(int[] elements) double
get
(int i, int j) Gets an element from thisMatrix
.getColumn
(int index) int
The size of the first dimension.int
The size of the second dimension.getRow
(int i) Extract a row as anSGDVector
.int[]
getShape()
Returns an int array specifying the shape of thisTensor
.void
hadamardProductInPlace
(Tensor other, DoubleUnaryOperator f) Updates thisTensor
with the Hadamard product (i.e., a term by term multiply) of this andother
.int
hashCode()
void
intersectAndAddInPlace
(Tensor other, DoubleUnaryOperator f) Updates thisTensor
by adding all the values from the intersection withother
.iterator()
leftMultiply
(SGDVector input) Multiplies this Matrix by aSGDVector
returning a vector of the appropriate size.matrixMultiply
(Matrix other) Multiplies this Matrix by anotherMatrix
returning a matrix of the appropriate size.matrixMultiply
(Matrix other, boolean transposeThis, boolean transposeOther) Multiplies this Matrix by anotherMatrix
returning a matrix of the appropriate size.void
normalizeRows
(VectorNormalizer normalizer) int
numActiveElements
(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 aSGDVector
returning a vector of the appropriate size.void
rowScaleInPlace
(DenseVector scalingCoefficients) Scales each row by the appropriate value in theDenseVector
.rowSum()
Generates aDenseVector
representing the sum of each row.double
rowSum
(int rowIndex) void
set
(int i, int j, double value) Sets an element at the supplied location.toString()
double
twoNorm()
Calculates the euclidean norm for this vector.Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface java.lang.Iterable
forEach, spliterator
Methods 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:Tensor
Reshapes the Tensor to the supplied shape. ThrowsIllegalArgumentException
if the shape isn't compatible. -
copy
-
get
-
gatherAcrossDim1
-
gatherAcrossDim2
-
transpose
-
equals
-
hashCode
-
set
Description copied from interface:Matrix
Sets an element at the supplied location. -
getDimension1Size
Description copied from interface:Matrix
The size of the first dimension.- Specified by:
getDimension1Size
in interfaceMatrix
- Returns:
- The size of the first dimension.
-
getDimension2Size
Description copied from interface:Matrix
The size of the second dimension.- Specified by:
getDimension2Size
in interfaceMatrix
- Returns:
- The size of the second dimension.
-
leftMultiply
Description copied from interface:Matrix
Multiplies this Matrix by aSGDVector
returning a vector of the appropriate size.The input must have dimension equal to
Matrix.getDimension2Size()
.- Specified by:
leftMultiply
in interfaceMatrix
- Parameters:
input
- The input vector.- Returns:
- A new
SGDVector
of sizeMatrix.getDimension1Size()
.
-
rightMultiply
Description copied from interface:Matrix
Multiplies this Matrix by aSGDVector
returning a vector of the appropriate size.The input must have dimension equal to
Matrix.getDimension1Size()
.- Specified by:
rightMultiply
in interfaceMatrix
- Parameters:
input
- The input vector.- Returns:
- A new
SGDVector
of sizeMatrix.getDimension2Size()
.
-
matrixMultiply
Description copied from interface:Matrix
Multiplies this Matrix by anotherMatrix
returning a matrix of the appropriate size.The input must have dimension 1 equal to
Matrix.getDimension2Size()
.- Specified by:
matrixMultiply
in interfaceMatrix
- Parameters:
other
- The input matrix.- Returns:
- A new
Matrix
of sizeMatrix.getDimension1Size()
,input.getDimension2Size()
.
-
matrixMultiply
Description copied from interface:Matrix
Multiplies this Matrix by anotherMatrix
returning a matrix of the appropriate size.Must obey the rules of matrix multiplication after the transposes are applied.
- Specified by:
matrixMultiply
in 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:Matrix
Generates aDenseVector
representing the sum of each row.- Specified by:
rowSum
in interfaceMatrix
- Returns:
- A new
DenseVector
of sizeMatrix.getDimension1Size()
.
-
rowScaleInPlace
Description copied from interface:Matrix
Scales each row by the appropriate value in theDenseVector
.- Specified by:
rowScaleInPlace
in interfaceMatrix
- Parameters:
scalingCoefficients
- ADenseVector
with sizeMatrix.getDimension1Size()
.
-
add
Description copied from interface:Matrix
Adds the argument value to the value at the supplied index. -
addAcrossDim1
-
addAcrossDim2
-
intersectAndAddInPlace
Description copied from interface:Tensor
Updates thisTensor
by adding all the values from the intersection withother
.The function
f
is applied to all values fromother
before the addition.Each value is updated as value += f(otherValue).
- Specified by:
intersectAndAddInPlace
in interfaceTensor
- Parameters:
other
- The otherTensor
.f
- A function to apply.
-
hadamardProductInPlace
Description copied from interface:Tensor
Updates thisTensor
with the Hadamard product (i.e., a term by term multiply) of this andother
.The function
f
is applied to all values fromother
before the addition.Each value is updated as value *= f(otherValue).
- Specified by:
hadamardProductInPlace
in interfaceTensor
- Parameters:
other
- The otherTensor
.f
- A function to apply.
-
foreachInPlace
Description copied from interface:Tensor
Applies aDoubleUnaryOperator
elementwise to thisTensor
.- Specified by:
foreachInPlace
in 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:Matrix
The number of non-zero elements in that row.An element could be active and zero, if it was active on construction.
- Specified by:
numActiveElements
in interfaceMatrix
- Parameters:
row
- The index of the row.- Returns:
- The number of non-zero elements.
-
getRow
-
getColumn
-
rowSum
-
columnSum
-
twoNorm
-
toString
-
iterator
- Specified by:
iterator
in interfaceIterable<MatrixTuple>
-
normalizeRows
-
columnSum
-