2

クラス用に SOM ネットワークを作成しましたが、機能せず、その理由もわかりません。単一のニューロンであり、重みベクトルを含む Node クラスがあります。次に、ノードの配列を含む SOM クラスを作成しました。

私の仕事は、このデータからSOMを実装すること です。 )。

コード: http://pastebin.com/GerkTf3C

トレーニング プロセス:

  1. 一連のトレーニング データとそれが適合するカテゴリからランダムに 1 つの入力ベクトルを取得します。
  2. ネットワークをアクティブにして、距離の配列を取得します。これにより、特定のニューロンが入力ベクトルとどのように異なるかがわかります。
  3. 入力ベクトルからの距離が最も小さい勝者ノードのインデックスを取得します。
  4. 現在の反復の学習率と近傍半径を計算します。
  5. ノードごとに、勝者ノードまでのユークリッド距離を計算します。
  6. ノードが勝者の近隣にある場合、重みベクトルをどのように変更および更新し、適合するカテゴリをクラスタ ベクトルに追加する必要があるかを計算します。
  7. 学習率が一定の限界を超えている間、ステップ 1 から 6 を繰り返します
  8. 最終的に、各ノードに適合するカテゴリを設定しました。

残念ながら、40% から 80% までの有効性が得られます (非常に不安定で、そのようなランダム性を排除する方法がわかりません) トレーニング セットでテストします (トレーニング セットで 100% の有効性があるはずです)。

PS私の英語とコードの質で申し訳ありませんが、Pythonを学び始めたばかりです。

4

0 に答える 0