Interface Tensor

  • All Known Implementing Classes:
    IndexedTensor, MappedTensor, MixedTensor

    public interface Tensor
    A multidimensional array which can be used in computations.

    A tensor consists of a set of dimension names and a set of cells containing scalar values. Each cell is is identified by its address, which consists of a set of dimension-label pairs which defines the location of that cell. Both dimensions and labels are string on the form of an identifier or integer.

    The size of the set of dimensions of a tensor is called its rank.

    In contrast to regular mathematical formulations of tensors, this definition of a tensor allows sparseness as there is no built-in notion of a contiguous space, and even in cases where a space is implied (such as when address labels are integers), there is no requirement that every implied cell has a defined value. Undefined values have no define representation as they are never observed.

    Tensors can be read and serialized to and from a string form documented in the toString() method.

    Author:
    bratseth
    • Method Detail

      • isEmpty

        default boolean isEmpty()
        Returns whether this have any cells
      • size

        long size()
        Returns the number of cells in this
      • get

        double get​(TensorAddress address)
        Returns the value of a cell, or 0.0 if this cell does not exist
      • has

        boolean has​(TensorAddress address)
        Returns true if this cell exists
      • cellIterator

        Iterator<Tensor.Cell> cellIterator()
        Returns the cell of this in some undefined order. A cell instances is only valid until next() is called. Call detach() on the cell to obtain a long-lived instance.
      • valueIterator

        Iterator<Double> valueIterator()
        Returns the values of this in some undefined order
      • cells

        Map<TensorAddress,​Double> cells()
        Returns an immutable map of the cells of this in no particular order. This may be expensive for some implementations - avoid when possible
      • asDouble

        default double asDouble()
        Returns the value of this as a double if it has no dimensions and one value
        Throws:
        IllegalStateException - if this does not have zero dimensions and one value
      • modify

        default Tensor modify​(DoubleBinaryOperator op,
                              Map<TensorAddress,​Double> cells)
        Returns a new tensor where existing cells in this tensor have been modified according to the given operation and cells in the given map. Cells in the map outside of existing cells are thus ignored.
        Parameters:
        op - the modifying function
        cells - the cells to modify
        Returns:
        a new tensor with modified cells
      • remove

        Tensor remove​(Set<TensorAddress> addresses)
        Returns a new tensor where existing cells in this tensor have been removed according to the given set of addresses. Only valid for sparse or mixed tensors. For mixed tensors, addresses are assumed to only contain the sparse dimensions, as the entire dense subspace is removed.
        Parameters:
        addresses - list of addresses to remove
        Returns:
        a new tensor where cells have been removed
      • reduce

        default Tensor reduce​(Reduce.Aggregator aggregator,
                              String... dimensions)
        Aggregates cells over a set of dimensions, or over all dimensions if no dimensions are specified
      • reduce

        default Tensor reduce​(Reduce.Aggregator aggregator,
                              List<String> dimensions)
        Aggregates cells over a set of dimensions, or over all dimensions if no dimensions are specified
      • concat

        default Tensor concat​(double argument,
                              String dimension)
      • l1Normalize

        default Tensor l1Normalize​(String dimension)
      • l2Normalize

        default Tensor l2Normalize​(String dimension)
      • largerOrEqual

        default Tensor largerOrEqual​(Tensor argument)
      • smallerOrEqual

        default Tensor smallerOrEqual​(Tensor argument)
      • approxEqual

        default Tensor approxEqual​(Tensor argument)
      • count

        default Tensor count()
      • median

        default Tensor median()
      • prod

        default Tensor prod()
      • largest

        default List<Tensor.Cell> largest()
        Returns the cell(s) of this tensor having the highest value
      • smallest

        default List<Tensor.Cell> smallest()
        Returns the cell(s) of this tensor having the lowest value
      • toStandardString

        static String toStandardString​(Tensor tensor)
        Call this from toString in implementations to return this tensor on the tensor literal form. (toString cannot be a default method because default methods cannot override super methods).
        Parameters:
        tensor - the tensor to return the standard string format of
        Returns:
        the tensor on the standard string format
      • contentToString

        static String contentToString​(Tensor tensor)
      • equals

        boolean equals​(Object o)
        Returns whether this tensor and the given tensor is mathematically equal: That they have the same dimension *names* and the same content.
        Overrides:
        equals in class Object
      • equals

        static boolean equals​(Tensor a,
                              Tensor b)
        Implement here to make this work across implementations. Implementations must override equals and call this because this is an interface and cannot override equals.
      • approxEquals

        static boolean approxEquals​(double x,
                                    double y,
                                    double tolerance)
      • approxEquals

        static boolean approxEquals​(double x,
                                    double y)
      • from

        static Tensor from​(TensorType type,
                           String tensorString)
        Returns a tensor instance containing the given data on the tensor literal form.
        Parameters:
        type - the type of the tensor to return
        tensorString - the tensor on the standard tensor string format
      • from

        static Tensor from​(double value)
        Returns a double as a tensor: A dimensionless tensor containing the value as its cell