Tensorflow と Keras を使用しています。球の表面の画像に対して適切なパターン認識を達成する可能性はありますか? ( Healpy フレームワーク) を使用して、パターン認識が機能するスカイマップを作成しています。問題は、これらの Healpy スカイマップが 1 次元の numpy 配列であるため、コンパクトなサブパターンがこの 1 次元配列に分散して分散される可能性があることです。これは、基本的な機械学習アルゴリズムを学習するのは実際にはかなり困難です (私は畳み込みディープ ネットワークについて考えています)。
このコンテキストでの特定のタスクは、球の表面上のブロブを数えることです (添付の画像を参照)。この特定のタスクでは、正しい数は 8 です。そのため、10000 個のスカイマップ (Healpy 設定: nside=16、npix=3072 に対応) を作成し、それぞれに 0 から 9 までのランダムな数のブロブ (したがって 10 の可能性) を設定しました。これを 1d Healpy 配列と単純なフィード フォワード ネットワークで解決しようとしました。
model = Sequential()
model.add(Dense(npix, input_dim=npix, init='uniform', activation='relu'))
model.add(Dropout(0.25))
model.add(Dense(10, init='uniform', activation='softmax'))
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
model.fit(skymaps, number_of_correct_sources, batch=100, epochs=10, validation_split=1.-train)
ただし、10,000 個のスカイマップでトレーニングした後、テスト セットの精度は 38% しか得られませんでした。1 次元配列のみではなく、(球体に表示されるように) Healpy セルの実際の配置を提供すると、これは大幅に増加すると思います。この場合、畳み込みネットワーク (Convolution2d) を使用して、通常の画像認識と同じように操作できます。ヘルピーセルを2次元配列に適切にマッピングする方法、または球上で直接畳み込みネットワークを使用する方法はありますか?
ありがとう!