Class ShrinkingMatrix

java.lang.Object
org.tribuo.math.la.DenseMatrix
org.tribuo.math.optimisers.util.ShrinkingMatrix
All Implemented Interfaces:
Serializable, Iterable<MatrixTuple>, Matrix, Tensor, ShrinkingTensor, ProtoSerializable<org.tribuo.math.protos.TensorProto>

public class ShrinkingMatrix extends DenseMatrix implements ShrinkingTensor
A subclass of DenseMatrix which shrinks the value every time a new value is added.

Be careful when modifying this or DenseMatrix.

See Also:
  • Constructor Details

    • ShrinkingMatrix

      public ShrinkingMatrix(DenseMatrix v, double baseRate, boolean scaleShrinking)
      Constructs a shrinking matrix copy of the supplied dense matrix.

      This matrix shrinks during each call to intersectAndAddInPlace(Tensor, DoubleUnaryOperator).

      Parameters:
      v - The matrix to copy.
      baseRate - The base amount of shrinking to apply after each update.
      scaleShrinking - If true reduce the shrinking value over time proportionally to the number of updates.
    • ShrinkingMatrix

      public ShrinkingMatrix(DenseMatrix v, double baseRate, double lambda)
      Constructs a shrinking matrix copy of the supplied dense matrix.

      This matrix shrinks during each call to intersectAndAddInPlace(Tensor, DoubleUnaryOperator), and then reprojects the matrix so it has the same twoNorm.

      Parameters:
      v - The matrix to copy.
      baseRate - The base rate of shrinkage.
      lambda - The lambda value (see Pegasos).
  • Method Details

    • deserializeFromProto

      public static ShrinkingMatrix deserializeFromProto(int version, String className, com.google.protobuf.Any message) throws com.google.protobuf.InvalidProtocolBufferException
      Deserialization factory.
      Parameters:
      version - The serialized object version.
      className - The class name.
      message - The serialized data.
      Returns:
      The deserialized object.
      Throws:
      com.google.protobuf.InvalidProtocolBufferException - If the protobuf could not be parsed from the message.
    • serialize

      public org.tribuo.math.protos.TensorProto serialize()
      Description copied from interface: ProtoSerializable
      Serializes this object to a protobuf.
      Specified by:
      serialize in interface ProtoSerializable<org.tribuo.math.protos.TensorProto>
      Overrides:
      serialize in class DenseMatrix
      Returns:
      The protobuf.
    • convertToDense

      public DenseMatrix convertToDense()
      Description copied from interface: ShrinkingTensor
      Converts the tensor into a dense tensor.
      Specified by:
      convertToDense in interface ShrinkingTensor
      Returns:
      A dense tensor copy of this shrinking tensor.
    • leftMultiply

      public DenseVector leftMultiply(SGDVector input)
      Description copied from interface: Matrix
      Multiplies this Matrix by a SGDVector returning a vector of the appropriate size.

      The input must have dimension equal to Matrix.getDimension2Size().

      Specified by:
      leftMultiply in interface Matrix
      Overrides:
      leftMultiply in class DenseMatrix
      Parameters:
      input - The input vector.
      Returns:
      A new SGDVector of size Matrix.getDimension1Size().
    • intersectAndAddInPlace

      public void intersectAndAddInPlace(Tensor other, DoubleUnaryOperator f)
      Description copied from interface: Tensor
      Updates this Tensor by adding all the values from the intersection with other.

      The function f is applied to all values from other before the addition.

      Each value is updated as value += f(otherValue).

      Specified by:
      intersectAndAddInPlace in interface Tensor
      Overrides:
      intersectAndAddInPlace in class DenseMatrix
      Parameters:
      other - The other Tensor.
      f - A function to apply.
    • get

      public double get(int i, int j)
      Description copied from interface: Matrix
      Gets an element from this Matrix.
      Specified by:
      get in interface Matrix
      Overrides:
      get in class DenseMatrix
      Parameters:
      i - The index for the first dimension.
      j - The index for the second dimension.
      Returns:
      The value at matrix[i][j].
    • scaleInPlace

      public void scaleInPlace(double value)
      Description copied from interface: Tensor
      Scales each element of this Tensor by coefficient.
      Specified by:
      scaleInPlace in interface Tensor
      Parameters:
      value - The coefficient of scaling.
    • twoNorm

      public double twoNorm()
      Description copied from interface: Tensor
      Calculates the euclidean norm for this vector.
      Specified by:
      twoNorm in interface Tensor
      Overrides:
      twoNorm in class DenseMatrix
      Returns:
      The euclidean norm.
    • iterator

      public MatrixIterator iterator()
      Specified by:
      iterator in interface Iterable<MatrixTuple>
      Overrides:
      iterator in class DenseMatrix