1

我正在尝试使用 SOM 来学习 80000X10 个样本(每个样本都是一个大小为 10 的向量)。但我什至不能用 10000X1 样本配置 8x8 网络。它抛出“内存不足”错误。

这是我的代码(数据是 80000X10 矩阵):

net=selforgmap([8 8])
net=configure(net,data(1:10000,1))

Matlab 帮助:“未配置的网络在第一次调用 train 时会自动配置和初始化。”

即使是 8000X1 的数据集,也需要很多时间。我注意到一个巨大numWeightElements: 512000net变量(8 * 8 * 8000 = 512000)。重量应为 8*8。SOM 训练算法不应该使用这么多内存。怎么了?

内存命令的输出:

>> memory
Maximum possible array:               3014 MB (3.160e+009 bytes) 
Memory available for all arrays:      3014 MB (3.160e+009 bytes) 
Memory used by MATLAB:                1154 MB (1.210e+009 bytes)
Physical Memory (RAM):                4040 MB (4.236e+009 bytes)
4

1 回答 1

0

我认为您配置错误的输入结构。每个输入向量必须是一列而不是一行。引用此“聚类数据 - MATLAB & Simulink

要定义聚类问题,只需将要聚类的 Q 个输入向量排列为输入矩阵中的列(有关静态和时间序列数据的数据格式的详细描述,请参阅“数据结构”)。例如,您可能希望对这组 10 个二元素向量进行聚类:

输入 = [7 0 6 2 6 5 6 1 0 1;6 2 5 0 7 5 5 1 2 2]

如您所见,每个输入向量都是一列。您有 10 个二元素输入向量作为 2x10 数组。

于 2012-12-09T09:34:00.003 回答