t3toolbox.OLD_uniform.ut3_add#

t3toolbox.OLD_uniform.ut3_add(x_cores: UniformTuckerTensorTrain, x_masks: UniformEdgeWeights, y_cores: UniformTuckerTensorTrain, y_masks: UniformEdgeWeights, use_jax: bool = False) Tuple[UniformTuckerTensorTrain, UniformEdgeWeights]#

Add two UniformTuckerTensorTrains, x,y -> x+y.

Parameters:
  • x_cores (UniformTuckerTensorTrainCores) – First summand cores

  • x_masks (UniformTuckerTensorTrainMasks) – First summand masks

  • y_cores (UniformTuckerTensorTrainCores) – Second summand cores

  • y_masks (UniformTuckerTensorTrainMasks) – Second summand masks

  • xnp – Linear algebra backend. Default: np (numpy)

Returns:

  • UniformTuckerTensorTrainCores – Cores for sum, x+y

  • UniformTuckerTensorTrainMasks – Cores for sum x+y

Examples

>>> import numpy as np
>>> import t3toolbox.tucker_tensor_train as t3
>>> import t3toolbox.uniform_tucker_tensor_train as ut3
>>> x = t3.t3_corewise_randn(((14,15,16), (4,6,5), (2,3,2,2)))
>>> x_cores, x_masks = ut3.t3_to_ut3(x)
>>> y = t3.t3_corewise_randn(((14,15,16), (6,7,8), (3,5,6,1)))
>>> y_cores, y_masks = ut3.t3_to_ut3(y)
>>> x_plus_y_cores, x_plus_y_masks = ut3.ut3_add(x_cores, x_masks, y_cores, y_masks) # add x+y
>>> dense_x = t3.t3_to_dense(x)
>>> dense_y = t3.t3_to_dense(y)
>>> dense_x_plus_y = ut3.ut3_to_dense(x_plus_y_cores, x_plus_y_masks)
>>> print(np.linalg.norm(dense_x + dense_y - dense_x_plus_y))
0.0