Est-ce que quelqu'un sait quelle sera une bonne bibliothèque pour calculer l'algèbre linéaire dans Android (SVD, QR, LU, les moins carrés, inverse, etc.)? P>
3 Réponses :
Si vous utilisez C ++ et NDK, vous pouvez utiliser Eigen . Il peut utiliser des ensembles d'instructions SSE 2/3/4, Bras Neon et Altivec. P>
Les bibliothèques d'algèbre linéaire conventionnelles sont implémentées dans des couches. Sous-programme d'algèbre linéaire de base (BLAS) est dans la couche inférieure. Le paquet algèbre linéaire (Lapack) est construit sur le dessus de Blas. Les interfaces de ces deux bibliothèques de couche sont normalisées dans les années 1990 et les fournisseurs matériels fourniront généralement diverses implémentations personnalisées pour leurs architectures. Lapack fournit les opérations de la bibliothèque algébra linéaire (SVD, QR, LU, les moins carrés, inverse, etc.) que vous avez mentionnées. Au cours des dernières années, des bibliothèques d'algèbre linéaire plus conviviales émergentes (par exemple, Armadillo , Eigen ), qui fournit en réalité des emballages pour la bibliothèque classique de Blas et de Lapack. P>
Jblas est juste une implémentation Java de Blas traditionnelle. JAMA est également une bibliothèque de type Lapack mis en œuvre avec Java. Ces deux bibliothèques ne ciblent pas de manière acuellement à Android. Mais comme la programmation Android implique généralement Java, nous pouvons leur faire travailler sur Android. Cependant, nous ne pouvons pas nous attendre à la performance de ces implémentations. Mon argument est que la performance est un facteur clé, puisque vous invoquez les bibliothèques au lieu de l'écrire vous-même, et les performances élevées augmenteront généralement les coûts d'énergie bas sur des plates-formes mobiles avec OS Android. P>
tandis que les bibliothèques algébrax linéaires ci-dessus ciblent généralement la CPU (architecture X86, OS: Linux / Windows / MacOS), des experts font maintenant des progrès pour fournir également des supports de pile complets sur les plates-formes mobiles (par exemple, Bras, OS: Android). p>
Je remarque que QUALCOMM vient de publier sa propre bibliothèque en forme de blas Library de mathématiques Snapdragon < / a>, qui peut courir sur l'architecture de bras personnalisée Qualcomm. Avec le niveau supérieur LOPACK en vous liant, ces opérations d'algèbre linéaire (SVD, QR, LU, Moins -squares, inverse, etc.) peuvent être mis en œuvre sur Android avec des performances élevées. P>
Plus récemment, avec le développement rapide de l'apprentissage profond, un certain nombre de packages réseau de neurones tels que Nnpack devenir populaire. Sous la hotte, ils sont bibliothèques d'algèbre linéaire avec des implémentations de faibles performances de primitives de primitives pour différentes couches dans les réseaux de neurones. P>
Avez-vous déjà rencontré quelque chose de prometteur depuis?
@gyro: édité et ajouter des packages de réseau de neurones populaires. Faites-moi savoir si vous pensez que tout manque.
Merci pour cette réponse extrêmement complète sur le sujet, c'est vraiment i> difficile de trouver des informations résumées sur les différentes bibliothèques d'algèbre linéaire.