当前位置:   article > 正文

Python通过tensorly实现张量分解(笔记)_tensorly库

tensorly库

1 Tensorly实现张量分解

1.1 tensorly的安装

TensorLy 是一个 Python 库,旨在使张量学习变得简单易用。它允许轻松执行张量分解、张量学习和张量代数。其后端系统允许使用 NumPy、PyTorch、JAX、MXNet、TensorFlow 或 CuPy 无缝执行计算,并在 CPU 或 GPU 上大规模运行方法。

conda install -c tensorly tensorly  # 安装tensorly库
  • 1

tensorly的GitHub网址

tensorly的官方网址

1.2 tensorly的常用的使用方法:
import tensorly as tl
import tensorly.decomposition as td
import tensorly.random

tl.set_backend('pytorch')  # Or 'mxnet', 'numpy', 'tensorflow', 'cupy' or 'jax'
# 设置后端可以更改后端以使用不同的框架执行计算。默认情况下,后端是 NumPy,但您也可以
# 使用 PyTorch、TensorFlow、MXNet、JAX 或 CuPy(需要先安装它们)执行计算。例如,将
# 后端设置为 PyTorch 后,所有计算都由 PyTorch 完成,并且可以在 GPU 上创建张量:
tensor = tl.tensor(np.random.randint(1, 10, size=(4, 4, 4))), device='cuda:0')
type(tensor) # torch.Tensor

mode1_m = tl.unfold(tensor, mode=1)  # 模1, 2, 3矩阵化
tensor = tl.fold(mode1_m, mode=1, shape=tensor.shape)  # 将模1矩阵mode1_m折叠回张量

[weight, factor_matrix] = tl.decomposition.parafac(tensor, 2)  # 将张量分解
# 其中weight为秩一张量相加的权重因子,factor_matrix
for i in range(len(factor)):
    print("factor matrix-{} : \n{}".format(i+1, factor_matrix[0]))  # 输出因子矩阵
# 由CP分解得到的权重和因子矩阵恢复张量
recovery_tensor = tl.cp_to_tensor([weight, factor_matrix])[0]

[weight, factor_matrix], errors = tl.decomposition.parafac(tensor, 10, n_iter_max=100, return_errors=True)
# n_iter_max表示最大迭代次数;return_errors表示是否要返回归一化误差;
tensor = tl.cp_to_tensor([weight, factor_matrix])
print(tensor[0])
for i in range(len(errors)):
    print("iteration {} : 错误率 : {}%".format(i+1, errors[i]*100))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/176577
推荐阅读
相关标签
  

闽ICP备14008679号