Pour mémoire, j'ai eu du mal à gérer shogun, une bibliothèque qui prend en charge l'apprentissage automatique dans différentes langues, avec python, donc j'écrirai une solution.
site officiel du shogun page shogun Github
Le site officiel est assez difficile à voir et je ne peux pas comprendre diverses choses car il contient des informations sur les versions antérieures, donc je pense qu'il vaut mieux regarder le wiki sur la page Github.
Avant d'installer shogun, installez ce dont vous avez besoin. Ce à quoi vous devez faire attention ici, c'est la version SWIG. SWIG
Depuis le 06/05/2015, la dernière version est 3.0.5, mais apparemment, lorsque shogun est installé à l'aide de cela, une erreur de segmentation se produit lors de son utilisation ([ici](https://github.com/shogun] -toolbox / shogun / issues / 2313) ou ici a une notation qui semble avoir été résolue, mais dans mon environnement Segfault est apparu) Par conséquent, installez la version 2.x de SWIG à l'avance et rétrogradez-la.
・ Si vous utilisez Homebrew
Tout d'abord, afin que vous puissiez installer la version précédente de SWIG
$brew tap homebrew/versions
Éxécuter. Cela vous permettra de voir les anciennes versions de la formule lorsque vous exécutez la recherche de bière.
$brew search
homebrew/versions/swig2 homebrew/versions/swig304 swig
$brew install homebrew/versions/swig2
... #Divers sont affichés
$brew link swig2
#Si vous utilisez déjà swig, brasser le lien--écraser écraser avec swig2
Ceci termine la préparation autour de SWIG.
Il semble que cela puisse être fait avec Homebrew et MacPorts, mais avec Homebrew, l'exemple python n'est pas installé et une erreur de segmentation se produit et il n'est pas utilisable, donc je l'apporte directement depuis Git. Officiellement, il existe un exemple sur MacPorts, mais je ne l'ai pas essayé, alors faites-moi savoir qui l'a essayé.
$git clone https://github.com/shogun-toolbox/shogun.git
$cd shogun
$mkdir build
Créez un répertoire appelé build in shogn selon la formule.
Je fais cmake à partir d'ici, mais il y a beaucoup d'options, et je n'ai pas trouvé la page qui le décrit spécifiquement, il est donc préférable d'utiliser l'outil GUI de CMake. Veuillez télécharger CMake.
Démarrez CMake et définissez Où est le code source et Où construire les binaires comme indiqué dans l'image. (Ce qui suit est un exemple de clonage de shogun sur le bureau)
Cela fera apparaître diverses options, vérifiera ce dont vous avez besoin et exécutera CMake.
Puis démarrez le terminal et
$cd /Users/YOUR_NAME/Desktop/shogun/build
$make && make install
Éxécuter.
$sudo find /usr -name "shogun" -type d
/usr/local/include/shogun
/usr/local/lib/python2.7/site-packages/shogun
/usr/local/share/shogun
Si, l'installation est réussie. Après cela, suivez le site officiel
$ export LD_LIBRARY_PATH=SHOGUN_INSTALL_DIR/lib
$ export PYTHONPATH=SHOGUN_INSTALL_DIR/lib/pythonX.Y/dist-packages/
Entrez s'il vous plait. Je pense que cela dépend de l'emplacement d'installation et du système d'exploitation, mais dans mon cas (et la plupart des personnes qui l'ont installé avec cette procédure)
$ export LD_LIBRARY_PATH=/usr/local/lib
$ export PYTHONPATH=/usr/local/lib/python2.7/site-packages/
Ce sera.
Dans cet état, si vous essayez toujours de charger shogun à partir de python, une erreur de segmentation se produira, alors changez le chemin de la bibliothèque référencée par _modshogun.so.
$sudo find /usr -name "*modshogun*"
/usr/local/lib/python2.7/site-packages/_modshogun.so
/usr/local/lib/python2.7/site-packages/modshogun.py
/usr/local/lib/python2.7/site-packages/modshogun.pyc
C'est le top. modshogun est généré par SWIG lors de l'installation de shogun, et je ne suis pas sûr des détails, mais cela ressemble à une abréviation de shogun modulaire. Il semble que diverses classes peuvent être chargées et appelées dynamiquement. Je ne connais pas les détails.
Jetons un coup d'œil aux bibliothèques dont dépend ce _modshogun.
$cd /usr/local/lib/python2.7/site-packages/
$otool -L _modshogun.so
_modshogun.so:
libshogun.17.dylib (compatibility version 17.0.0, current version 17.1.0)
/System/Library/Frameworks/Python.framework/Versions/2.7/Python (compatibility version 2.7.0, current version 2.7.6)
/System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate (compatibility version 1.0.0, current version 4.0.0)
/usr/local/lib/libglpk.35.dylib (compatibility version 37.0.0, current version 37.0.0)
/usr/local/opt/arpack/libexec/lib/libarpack.2.dylib (compatibility version 3.0.0, current version 3.0.0)
/usr/local/lib/libopencv_videostab.2.4.dylib (compatibility version 2.4.0, current version 2.4.11)
/usr/local/lib/libtbb.dylib (compatibility version 0.0.0, current version 0.0.0)
/usr/local/lib/libopencv_superres.2.4.dylib (compatibility version 2.4.0, current version 2.4.11)
/usr/local/lib/libopencv_stitching.2.4.dylib (compatibility version 2.4.0, current version 2.4.11)
/usr/local/lib/libopencv_contrib.2.4.dylib (compatibility version 2.4.0, current version 2.4.11)
/usr/local/lib/libopencv_nonfree.2.4.dylib (compatibility version 2.4.0, current version 2.4.11)
/usr/local/lib/libopencv_ocl.2.4.dylib (compatibility version 2.4.0, current version 2.4.11)
/usr/local/lib/libopencv_gpu.2.4.dylib (compatibility version 2.4.0, current version 2.4.11)
/usr/local/lib/libopencv_photo.2.4.dylib (compatibility version 2.4.0, current version 2.4.11)
/usr/local/lib/libopencv_objdetect.2.4.dylib (compatibility version 2.4.0, current version 2.4.11)
/usr/local/lib/libopencv_legacy.2.4.dylib (compatibility version 2.4.0, current version 2.4.11)
/usr/local/lib/libopencv_video.2.4.dylib (compatibility version 2.4.0, current version 2.4.11)
/usr/local/lib/libopencv_ml.2.4.dylib (compatibility version 2.4.0, current version 2.4.11)
/usr/local/lib/libopencv_calib3d.2.4.dylib (compatibility version 2.4.0, current version 2.4.11)
/usr/local/lib/libopencv_features2d.2.4.dylib (compatibility version 2.4.0, current version 2.4.11)
/usr/local/lib/libopencv_highgui.2.4.dylib (compatibility version 2.4.0, current version 2.4.11)
/usr/local/lib/libopencv_imgproc.2.4.dylib (compatibility version 2.4.0, current version 2.4.11)
/usr/local/lib/libopencv_flann.2.4.dylib (compatibility version 2.4.0, current version 2.4.11)
/usr/local/lib/libopencv_core.2.4.dylib (compatibility version 2.4.0, current version 2.4.11)
/usr/local/lib/libnlopt_cxx.0.dylib (compatibility version 9.0.0, current version 9.2.0)
/usr/local/lib/libColPack.0.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/local/lib/libjson-c.2.dylib (compatibility version 3.0.0, current version 3.1.0)
/usr/local/opt/libxml2/lib/libxml2.2.dylib (compatibility version 12.0.0, current version 12.2.0)
/usr/local/lib/libhdf5.9.dylib (compatibility version 10.0.0, current version 10.0.0)
/usr/local/lib/libsz.2.dylib (compatibility version 3.0.0, current version 3.0.0)
/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1213.0.0)
/usr/lib/libcurl.4.dylib (compatibility version 7.0.0, current version 8.0.0)
/usr/lib/libbz2.1.0.dylib (compatibility version 1.0.0, current version 1.0.5)
/usr/local/lib/liblzma.5.dylib (compatibility version 8.0.0, current version 8.1.0)
/usr/local/lib/libsnappy.1.dylib (compatibility version 4.0.0, current version 4.1.0)
/usr/local/lib/liblzo2.2.dylib (compatibility version 3.0.0, current version 3.0.0)
/usr/local/lib/libprotobuf.9.dylib (compatibility version 10.0.0, current version 10.1.0)
/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.0.0)
Il sort dans une rangée comme celle-ci. Dans mon cas, je l'ai installé avec des options python-modulaire et OpenCV, donc ça ressemble à ceci. Je pense que cette partie changera en fonction de la personne.
Au sommet de cela
/System/Library/Frameworks/Python.framework/Versions/2.7/Python
Semble être python installé sur OSX depuis le début, et il semble y avoir diverses raisons, mais comme on dit que son utilisation est la cause de l'erreur de segmentation, je vais changer cela.
Vous pouvez changer le chemin des bibliothèques dépendantes de _modshogun.so en utilisant quelque chose appelé install_name_tool.
$install_name_tool -changer le chemin que vous voulez changer le chemin pour changer le nom de la bibliothèque
Avec ce sentiment
$install_name_tool -change /System/Library/Frameworks/Python.framework/Versions/2.7/Python /usr/local/Cellar/python/2.7.10/Frameworks/Python.framework/Versions/2.7/lib/libpython2.7.dylib _modshogun.so
J'ai écrit comme ça. C'est le chemin du changement, mais je l'ai fait en le passant par la bibliothèque partagée de la version de python qui est sortie lorsque shogun a été installé. Je ne sais pas si c'est correct, alors faites-moi savoir qui vous êtes.
Maintenant, essayez de démarrer python une fois.
$python
Python 2.7.10 (default, Jun 3 2015, 16:47:53)
[GCC 4.2.1 Compatible Apple LLVM 6.1.0 (clang-602.0.53)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import modshogun
>>> import shogun
>>>
Le défaut de segmentation a disparu. C'était long...
Je déplacerai également l'échantillon. Aller de Git au répertoire shogun cloné
$python examples/undocumented/python_modular/graphical/svm.py
Ensuite, il ne devrait y avoir aucun problème ... (Je ne suis pas sûr que ce soit vraiment bien parce que je viens de le faire ...)
À propos, il existe différents exemples dans l'exemple, vous voudrez peut-être jeter un coup d'œil. Il y a une référence sur le site officiel, mais c'est assez approximatif, il peut donc être plus rapide de lire et de comprendre l'exemple de code.
Si vous obtenez une erreur de segmentation jusqu'à présent, et si vous voyez quelque chose comme "wrap_delete {un nom de classe}" dans le journal des erreurs et qu'une erreur de segmentation se produit au moment de PyArg_UnpackTuple, cela est dû à la version SWIG. Il y a une forte possibilité de. Vérifiez la version, et s'il s'agit de la série 3.x, cela peut fonctionner si vous la modifiez en série 2.x et l'installez à nouveau.
Recommended Posts