All tensors in the system are reduced to the general form. For example: if
there are several numerical factors in the product they will be multiplied
and only one resulting numerical factor will be in the resulting product. To
maintain this reduced form of expressions, specific infrastructure for tensor
creation is provided. All creations of tensors are performed using this
infrastructure and explicit tensor creation is architecturally forbidden for
the user. Tensor creation infrastructure consists of two functionally
redundant but optimized for different usage strategies interfaces:
TensorBuilder
and
TensorFactory
. In fact TensorBuilder and TensorFactory returned
by one particular tensor will produce exactly the same result for the same
input sub-tensor sequence.
This class determines the common interface
for tensor factories. Objects of this type are produced by
Tensor#getFactory()method.
Main contract for the factory infrastructure could be
expressed in the following code:
Tensor tensor = ....;
TensorFactory factory = tensor.getFactory();
Tensor createdTensor = factory.create(tensor.getRange(0, tensor.size()));
assert TensorUtils.compare(createdTensor,tensor);
So, using a
tensor factory of any tensor you can rebuild it into the equivalent
tensor.
Behavior of TensorFactory is fully consistent with
TensorBuilder, see
TensorBuilder for more information. For general
tensor creation use factory methods in
Tensors class.