gpt4 book ai didi

multidimensional-array - 我在 matlab 中重建分解张量时遇到了麻烦

转载 作者:行者123 更新时间:2023-12-04 05:46:04 25 4
gpt4 key购买 nike

我们在 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

最佳答案

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

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

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

我担心你的“做聚类”步骤 - 塔克分解是线性的(如主成分),非负张量分解可能更接近你想要做的......为每个用户分配一些“典型”的非负混合向量“喜好。 “聚类”倾向于暗示硬边分类,而不是模糊分类。

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com