【问题标题】:I have troubles reconstructing decomposed tensor in matlab我在matlab中重建分解张量时遇到了麻烦
【发布时间】: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


【解决方案1】:

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

【讨论】:

  • +1 我同意。我认为,内存不足以将两个数据副本放在一起。因此,首先将其保存到磁盘(例如二进制)。然后一一阅读。你知道顺序,所以,把它放在矩阵上的适当位置。
  • 只是为了进一步解释数据。我们有一个用户搜索汽车的数据库。我们想做推荐模型。
  • 鉴于张量很大,我们需要一种将其展平的方法来执行重建,如果有人可以分享一些关于如何做到这一点的示例 matlab 代码会很好,因为我对 matlab 比较陌生.所以我想将 5D 张量转换为 2D
【解决方案2】:

您不需要重建整个张量来估计“集群”用户的样本重建误差。例如,您可以对单个用户进行抽样并比较重建的切片并在进行过程中收集统计数据。通常在机器学习中,您希望通过使用“样本外”来交叉验证您的模型 - 即从测试集中随机划分训练集。

我会观察到车身类型是车型的一个属性,而价格大致是每个车型的年龄(和状况)的函数......所以在这种情况下你并没有足够独立的尺寸。

您的 492020 用户适合内存的原因可能是因为张量是稀疏的。除非您对因子强制执行稀疏性,否则重新组合分解的张量通常是密集的(尽管等级降低了)。无论如何,使用分解形式的计算效率要高得多。

我担心您的“进行聚类”步骤 - Tucker 分解是线性的(如主成分),非负张量分解可能更接近您想要做的事情 .. 为每个用户分配一个非负混合向量一些“典型”的偏好。 “聚类”往往意味着硬边分类,而不是模糊。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-03
    • 2023-02-11
    • 2021-06-06
    • 2017-08-25
    • 2013-11-11
    • 2011-08-28
    • 2022-01-05
    • 1970-01-01
    相关资源
    最近更新 更多