我正在使用 Tensorflow 和 Keras。是否有可能对球体表面的图像进行正确的模式识别?我正在使用(Healpy 框架)来创建模式识别应该在其上工作的天空图。问题是这些 Healpy 天空图是一维 numpy 数组,因此,紧凑的子模式可能分布在这个一维数组上。对于基本的机器学习算法来说,这实际上很难学习(我正在考虑卷积深度网络)。
在这种情况下,一项具体任务是计算球体表面上的斑点(见附图)。对于这个特定的任务,正确的数字是 8。所以我创建了 10000 个天空图(Healpy 设置:nside=16 对应于 npix=3072),每个天空图的随机数介于 0 和 9 之间(因此有 10 种可能性)。我试图用一维 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%。我想当提供 Healpy 单元的真实排列(如它出现在球体上)而不是仅提供一维数组时,这将显着增加。在这种情况下,可以使用卷积网络 (Convolution2d) 并像通常的图像识别一样操作。任何想法如何在二维阵列中正确映射 heappy 细胞或直接在球体上使用卷积网络?
谢谢!