【发布时间】:2012-05-20 13:39:42
【问题描述】:
我们在 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)张量转换为二维矩阵的方法。
只是为了多解释一下数据。我们有一个用户搜索汽车的数据库。我们想做推荐模型。我们创建了一个具有 5 个维度的张量:308(汽车型号)x 22(车身类型)x 29(价格类别)x 12(制造年份)x 492020(用户)。然后我们运行张量分解,我们现在可以在最后一个分解的维度上进行聚类,以按用户的搜索对用户进行分组,并构建一些搜索日志依赖项。到这里我们还好。现在我们想从它的分解版本中重建张量,以获得一些新的记录作为预测。鉴于张量很大,我们需要一种将其展平的方法来执行重建,如果有人可以分享一些如何做到这一点的示例 matlab 代码会很好,因为我对 matlab 比较陌生。所以我想将 5D 张量转换为 2D
【问题讨论】:
-
那是 1.1e12 个元素;如果每个都是双倍,则需要 8TB 的内存。我认为可以肯定地假设这是不可能的。
-
我怀疑你有张量。我从来没有听说过有这么大的尺寸。那是一种什么样的转变?
-
它当然存在,我们甚至可以毫无问题地分解它,在高性能服务器上花了 2 分钟。
标签: multidimensional-array matrix sparse-matrix matlab