multidimensional-array - 我在 matlab 中重建分解张量时遇到问题

标签 multidimensional-array matrix sparse-matrix matlab

我们在 matlab 中有一个大小为 308 x 22 x 29 x 12 x 492020 的张量 它相当大。我们对其进行了分解,效果很好。现在我们正在尝试将其重建以获得一些预测。当我们运行它时,当我们对最后一个维度进行乘法时,它会因内存不足而崩溃。

我试图将张量展平为 2 x 2 矩阵以使重建更容易。我找不到办法做到这一点,我尝试在 matlab 中使用 reshape 函数但没有成功。所以基本上我想知道matlab中将(308 x 22 x 29 x 12 x 492020)张量转换为2D矩阵的方法。

只是为了进一步解释一下数据。我们有一个搜索购买汽车的用户数据库。我们想做推荐模型。我们创建了一个具有 5 个维度的张量:308(车型)x 22(车身类型)x 29(价格类别)x 12(制造年份)x 492020(用户)。然后,我们运行张量分解,现在可以在最后分解的维度上进行聚类,通过搜索对用户进行分组,并构建一些搜索日志依赖项。到这里我们都还好。现在我们想要从分解的版本中重建张量,以获得一些新的记录作为预测。鉴于张量很大,我们需要一种将其展平以执行重建的方法,如果有人可以分享一些如何执行此操作的示例 matlab 代码,那就太好了,因为我对 matlab 相对较新。所以我想将 5D 张量转换为 2D

最佳答案

如果 MATLAB 变量列表中有巨大的 5D 张量,并且您能够访问其中的各个元素,例如 MyTensor(123,17,15,4,123456) 那么您就可以做到这一点,如果你有足够的存储空间。我没有处理这种大小的任何数据的经验,但如果您可以访问它,那么您就可以重建它。如果您将所有内容逐个元素或逐个切片或 n 维超切片逐个 super 切片写入磁盘,以使用流水号分隔文件,然后以正确的顺序从这些文件加载​​和重建元素/切片/ super 切片,那么你就会得到二维矩阵。如果元素访问适用于您的 5D 张量,我将首先创建一个小型 5D 矩阵并将其转换为 2D 矩阵,以查看维度是否按正确的顺序排列,仅使用也适用于您的巨大 5D 张量的访问方法。之后,您可以使用完全相同的代码重建巨大的 5D 张量。

关于multidimensional-array - 我在 matlab 中重建分解张量时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10673899/

相关文章:

java - 创建一个方形的二维数组

r - 在转换矩阵上运行随机游走比 igraph::random_walk() 更有效

python - 在 numpy 中动态构造特殊矩阵

c - 删除 gsl 矩阵的列

python - Python 函数 scipy.sparse.bmat 的 R 等价物是什么?

php - 使用多维数组构建查询字符串

PHP |将值分配给具有键数组的任何多维数组的函数

python - 在 C 中打印二维数组

python - reshape Pandas 相关矩阵

r - 稀疏矩阵到 R 中的数据框