Basic tensor operations

Example on how to use tensorly to perform basic tensor operations.

import numpy as np
import tensorly as tl
from tensorly.testing import assert_array_equal

A tensor is simply a numpy array

tensor = tl.tensor(np.arange(24).reshape((3, 4, 2)))
print(f"* original tensor:\n{tensor}")
* original tensor:
[[[ 0  1]
  [ 2  3]
  [ 4  5]
  [ 6  7]]

 [[ 8  9]
  [10 11]
  [12 13]
  [14 15]]

 [[16 17]
  [18 19]
  [20 21]
  [22 23]]]

Unfolding a tensor is easy

for mode in range(tensor.ndim):
    print(f"* mode-{mode} unfolding:\n{tl.unfold(tensor, mode)}")
* mode-0 unfolding:
[[ 0  1  2  3  4  5  6  7]
 [ 8  9 10 11 12 13 14 15]
 [16 17 18 19 20 21 22 23]]
* mode-1 unfolding:
[[ 0  1  8  9 16 17]
 [ 2  3 10 11 18 19]
 [ 4  5 12 13 20 21]
 [ 6  7 14 15 22 23]]
* mode-2 unfolding:
[[ 0  2  4  6  8 10 12 14 16 18 20 22]
 [ 1  3  5  7  9 11 13 15 17 19 21 23]]

Re-folding the tensor is as easy:

for mode in range(tensor.ndim):
    unfolding = tl.unfold(tensor, mode)
    folded = tl.fold(unfolding, mode, tensor.shape)
    assert_array_equal(folded, tensor)

Total running time of the script: (0 minutes 0.005 seconds)

Gallery generated by Sphinx-Gallery