Data Tensors
The library provides a Tensor
class that can hold data of different orders
(scalars, vectors, matrices or threeway data). All methods provided by algorithm
apis such as in SupervisedAlgorithm
, UnsupervisedAlgorithm
, Filter
, etc.
accept Tensor
objects as method arguments and return Tensor
objects.
Primitive to Tensor
Tensors can be instantiated with the static Tensor.create(...)
method, by passing raw double
data:
Tensor.create(double data)
Tensor.create(double[] data)
Tensor.create(double[][] data)
Tensor.create(double[][][] data)
Tensor to primitive
A tensor object Tensor t
can be converted back into primitive double arrays with:
t.toScalar() -> double
t.toArray1d() -> double[]
t.toArray2d() -> double[][]
t.toArray3d() -> double[][][]
Tensor Order
A tensor's order/number of modes can be checked with t.order()
.
Reading Data
The DataReader
class provides methods to read different file formats.
Three-Way Sparse Data
DataReader.read3WaySparse(...)
reads sparse data, giving the indices and the corresponding value, of the following format :
x0 y0 z0 value0
x0 y0 z1 value1
...
Sparse Matrices
DataReader.readSparseMatrix(...)
reads sparse matrices, giving the indices and the corresponding value, of the following format :
x0 y0 value0
x0 y0 value1
...
Multiple CSV Files
DataReader.read3WayMultiCsv(...)
reads three-way tensors which have one mode distributed across multiple files. That is, a I x J x K
tensor could have K
files with the name data{k}.csv
(with k in 1..k
) and each file contains a dense I x J
matrix.