先验知识:张量可以按照不同阶展开成不同的矩阵
具体可以参考:如何加单理解和实现张量展开
但是查到的资料都不是python的,我根据matlab版本的代码做了一些转换
在这里共享给大家(目前应该只适用三阶张量)
# Author--Zoe
# 2022/06/02
'''
tensor 张量
mat 矩阵
mode 分解的阶
tensor_size 张量每维的大小构成的数组
'''
# 张量转矩阵
def ten2mat(tensor, mode):
return np.reshape(np.moveaxis(tensor, mode, 0), (tensor.shape[mode], -1), order = 'F')
# 矩阵转张量
def mat2ten(mat, tensor_size, mode):
index = list()
index