1

SOM を使用して 80000X10 サンプル (各サンプルはサイズ 10 のベクトル) を学習しようとしています。しかし、10000X1 サンプルで 8x8 ネットを構成することさえできません。「メモリ不足」エラーがスローされます。

これが私のコードです(データは80000X10マトリックスです):

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

Matlab ヘルプ: 「構成されていないネットワークは、train が初めて呼び出されたときに自動的に構成および初期化されます。」

8000X1 データセットの場合でも、かなりの時間がかかります。numWeightElements: 512000変数が大きいことに気付きましたnet(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

入力構造が間違っていると思います。各入力ベクトルは、行ではなく列でなければなりません。この「 Clustering Data - MATLAB & Simulink」からの引用

クラスタリング問題を定義するには、Q 入力ベクトルを入力行列の列としてクラスタ化するように単純に配置します (静的データと時系列データのデータ形式の詳細な説明については、 「データ構造」を参照してください)。たとえば、次の 10 個の 2 要素ベクトルのセットをクラスター化することができます。

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

ご覧のとおり、各入力ベクトルは列です。2x10 配列として 10 個の 2 要素入力ベクトルがあります。

于 2012-12-09T09:34:00.003 に答える