【问题标题】:SOM out of memory in MATLABMATLAB 中的 SOM 内存不足
【发布时间】:2012-12-09 17:34:00
【问题描述】:

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

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

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

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

即使是 8000X1 的数据集,也需要很多时间。我注意到net 变量(8*8*8000=512000)中有一个巨大的numWeightElements: 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)

【问题讨论】:

    标签: matlab out-of-memory self-organizing-maps


    【解决方案1】:

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

    要定义一个聚类问题,只需将 Q 个输入向量排列为 聚集为输入矩阵中的列(参见“Data Structures” 有关静态和时间数据格式的详细说明 系列数据)。例如,您可能希望将这组 10 个 二元素向量:

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

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

    【讨论】:

      猜你喜欢
      • 2015-05-23
      • 2014-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-26
      • 2011-04-03
      • 1970-01-01
      相关资源
      最近更新 更多