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

本文介绍如何安装及使用TensorLy进行张量分解,包括不同框架的切换和常见操作演示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 Tensorly实现张量分解

1.1 tensorly的安装

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

conda install -c tensorly tensorly  # 安装tensorly库

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))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深度不睡觉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值