Installieren Sie Shogun mit Python Modular (OS X Yosemite)

Als Memorandum fiel es mir schwer, mich mit Shogun zu beschäftigen, einer Bibliothek, die maschinelles Lernen in verschiedenen Sprachen mit Python unterstützt, also werde ich eine Lösung schreiben.

Referenz

offizielle Shogun-Website Shogun Github Seite

Die offizielle Website ist ziemlich schwer zu sehen und ich kann verschiedene Dinge nicht verstehen, da sie Informationen zu früheren Versionen enthält. Ich denke, es ist besser, das Wiki auf der Github-Seite zu lesen.

0. Vorbereitung

Installieren Sie vor der Installation von Shogun das, was Sie benötigen. Was Sie hier beachten müssen, ist die SWIG-Version. SWIG

Ab dem 05.06.2015 ist die neueste Version 3.0.5, aber anscheinend tritt bei der Installation von Shogun ein Segmentierungsfehler auf, wenn Shogun verwendet wird (hier. -toolbox / shogun / issue / 2313) oder hier hat eine Notation, die gelöst zu sein scheint, aber in meiner Umgebung erschien Segfault) Installieren Sie daher die SWIG-Version 2.x im Voraus und führen Sie ein Downgrade durch.

・ Wenn Sie Homebrew verwenden

Zunächst einmal, damit Sie die frühere Version von SWIG installieren können

$brew tap homebrew/versions

Ausführen. Auf diese Weise können Sie frühere Versionen der Formel anzeigen, wenn Sie die Brühsuche ausführen.

$brew search
homebrew/versions/swig2	    homebrew/versions/swig304	swig
$brew install homebrew/versions/swig2

... #Es werden verschiedene angezeigt

$brew link swig2 
#Wenn Sie bereits swig verwenden, brauen Sie Link--überschreiben überschreiben mit swig2

Damit ist die Vorbereitung um SWIG abgeschlossen.

1. Shogun herunterladen

Es scheint, dass dies mit Homebrew und MacPorts möglich ist, aber mit Homebrew ist das Python-Beispiel nicht installiert und es tritt ein Segmentierungsfehler auf, der nicht verwendet werden kann. Deshalb bringe ich es direkt von Git. Offiziell gibt es ein Beispiel für MacPorts, aber ich habe es nicht ausprobiert. Bitte lassen Sie mich wissen, wer es versucht hat.

$git clone https://github.com/shogun-toolbox/shogun.git 
$cd shogun
$mkdir build

Erstellen Sie ein Verzeichnis mit dem Namen build in shogn gemäß der Formel.

2. Installation von Shogun

Ich mache cmake von hier aus, aber es gibt viele Optionen, und ich konnte die Seite, die es speziell beschreibt, nicht finden. Daher ist es besser, das GUI-Tool von CMake zu verwenden. Bitte laden Sie [CMake] herunter (http://www.cmake.org/).

Starten Sie CMake und legen Sie fest, wo sich der Quellcode befindet und wo die Binärdateien erstellt werden sollen (siehe Abbildung). (Das folgende Beispiel zeigt das Klonen von Shogun auf dem Desktop.) スクリーンショット 2015-06-05 15.18.52.png

Dadurch werden verschiedene Optionen angezeigt, Sie überprüfen, was Sie benötigen, und CMake wird ausgeführt.

Dann starten Sie das Terminal und

$cd /Users/YOUR_NAME/Desktop/shogun/build
$make && make install

Ausführen.

$sudo find /usr -name "shogun" -type d

/usr/local/include/shogun
/usr/local/lib/python2.7/site-packages/shogun
/usr/local/share/shogun

Wenn, ist die Installation erfolgreich. Folgen Sie danach der offiziellen Website

$ export LD_LIBRARY_PATH=SHOGUN_INSTALL_DIR/lib
$ export PYTHONPATH=SHOGUN_INSTALL_DIR/lib/pythonX.Y/dist-packages/

Bitte eingeben. Ich denke, es hängt vom Installationsort und dem Betriebssystem ab, aber in meinem Fall (und den meisten Leuten, die es mit diesem Verfahren installiert haben)

$ export LD_LIBRARY_PATH=/usr/local/lib
$ export PYTHONPATH=/usr/local/lib/python2.7/site-packages/

Es wird sein.

3. Ändern Sie den Pfad der Bibliothek, von der _modshogun.so abhängt

Wenn Sie in diesem Zustand weiterhin versuchen, Shogun aus Python zu laden, tritt ein Segmentierungsfehler auf. Ändern Sie daher den Pfad der Bibliothek, auf die _modshogun.so verweist.

$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

Es ist das oberste. Modshogun wird von SWIG während der Installation von Shogun generiert, und ich bin mir über die Details nicht sicher, aber es scheint eine Abkürzung für modulares Shogun zu sein. Es scheint, dass verschiedene Klassen dynamisch geladen und aufgerufen werden können. Ich kenne die Details nicht.

Werfen wir einen Blick auf die Bibliotheken, von denen dieses _modshogun abhängt.

$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)

Es kommt in einer Reihe wie diese heraus. In meinem Fall habe ich es mit Python-Modular- und OpenCV-Optionen installiert, also sieht es so aus. Ich denke, dieser Teil wird sich je nach Person ändern.

Oben drauf

 /System/Library/Frameworks/Python.framework/Versions/2.7/Python

Scheint von Anfang an Python unter OSX installiert zu sein, und es scheint verschiedene Gründe zu geben, aber da gesagt wird, dass dies die Ursache für Segmentierungsfehler ist, werde ich dies ändern.

Sie können den Pfad der abhängigen Bibliotheken von _modshogun.so mit dem Namen install_name_tool ändern.

$install_name_tool -Pfad ändern Sie möchten den Pfad ändern, um den Bibliotheksnamen zu ändern

Mit diesem Gefühl

$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

Ich habe so geschrieben. Es ist der Weg, der geändert werden muss, aber ich habe ihn durch die gemeinsam genutzte Bibliothek der Python-Version geleitet, die bei der Installation von Shogun herauskam. Ich weiß nicht, ob dies korrekt ist. Bitte lassen Sie mich wissen, wer Sie sind.

4. Versuchen Sie, die Probe zu bewegen

Versuchen Sie nun einmal, Python zu starten.

$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
>>> 

Der Segmentierungsfehler ist verschwunden. Es war lang...

Ich werde auch die Probe verschieben. Wechseln Sie von Git zum geklonten Shogun-Verzeichnis

$python examples/undocumented/python_modular/graphical/svm.py

スクリーンショット 2015-06-05 15.54.37.png

Wenn ja, sollte es kein Problem geben ... (Ich bin nicht sicher, ob das wirklich in Ordnung ist, weil ich es gerade geschafft habe ...)

Das Beispiel enthält übrigens verschiedene Beispiele. Vielleicht möchten Sie einen Blick darauf werfen. Es gibt eine Referenz auf der offiziellen Website, aber es ist ziemlich rau, so dass es möglicherweise schneller ist, den Beispielcode zu lesen und zu verstehen.

Apropos

Wenn Sie bisher einen Segmentierungsfehler erhalten und im Fehlerprotokoll etwas wie "wrap_delete {irgendein Klassenname}" angezeigt wird und zum Zeitpunkt von PyArg_UnpackTuple ein Segmentierungsfehler auftritt, liegt dies an der SWIG-Version. Es besteht eine hohe Wahrscheinlichkeit von. Überprüfen Sie die Version. Wenn es sich um eine 3.x-Serie handelt, funktioniert sie möglicherweise, wenn Sie sie in die 2.x-Serie ändern und erneut installieren.

Recommended Posts

Installieren Sie Shogun mit Python Modular (OS X Yosemite)
Installieren Sie Python 2.7.9 und Python 3.4.x mit pip.
Installieren Sie lp_solve unter Mac OSX und rufen Sie es mit Python auf.
Installieren Sie Voluptuous mit Python 2.5
Installieren Sie Python mit pyenv
So installieren Sie caffe unter OS X mit Macports
mac OS X 10.15.x pyenv Python Wenn Sie nicht installieren können
Installieren Sie PyQt5 mit Homebrew unter Mac OS X Marvericks (10.9.2).
x86-Compiler selbst erstellt mit Python
Installieren Sie die Python-Umgebung mit Anaconda
Installieren Sie eine externe Bibliothek mit Python
Word Count mit Apache Spark und Python (Mac OS X)
Testen Sie Python mit Miniconda unter OS X und Linux mit travis-ci
Erstellen Sie eine Python-Umgebung mit pyenv (OS X El Capitan 10.11.3).
So installieren Sie Theano unter Mac OS X mit Homebrew
Installieren Sie Python 3.8 unter Ubuntu 18.04 (Betriebssystemstandard)
pyenv-vertualenv installiert die Python3-Serie nicht gut
Installieren Sie Python von der Quelle mit Ansible
Installieren Sie Python 3.8 unter Ubuntu 20.04 (Betriebssystemstandard)
Installieren Sie Sphinx unter MacOSX
Installieren Sie das Python-Plug-In mit Netbeans 8.0.2
Installieren Sie mitmproxy unter Mac OS X.
Installieren Sie Python 3.9 unter Ubuntu 20.04 (Betriebssystemstandard?)
Installieren Sie Python 2.7 unter Ubuntu 20.04 (Betriebssystemstandard?)
Installieren Sie Python mit Mac vs Code
Installieren Sie pgmagick unter Mac OS X 10.9
Erste Schritte mit dem Python-Framework Django unter Mac OS X.
Installieren Sie OpenCV2.4 (+ Python) schnell unter OS X und probieren Sie das Beispiel aus
Installieren Sie matplotlib unter OS X El Capitan
Setzen Sie OpenCV in OS X mit Homebrew ein und geben Sie Video mit Python ein / aus
Mac OS X Yosemite 10.10 Aufbau einer Entwicklungsumgebung
Installieren Sie NumPy, SciPy, Matplotlib in OS X mit Homebrew (Stand November 2015).
Treten Sie einem Online-Richter mit Python 3.x bei
PIL mit Python 3.x unter macOS installieren
Leichte Bildverarbeitung mit Python x OpenCV
So installieren Sie Python3 mit Docker Centos
[Blender x Python] Beginnen wir mit Blender Python !!
Ich habe Pygame mit Python 3.5.1 in der Umgebung von pyenv unter OS X installiert
[Ansible] Installieren Sie dnf unter Centos7 mit dem Python3-Interpreter
GUI-Automatisierung mit Python x Windows App Driver
Ich wollte Python 3.4.3 mit Homebrew + pyenv installieren
Führen Sie Zookeeper x Python (Kazoo) unter Mac OS X aus
Fügen Sie Python 2.7.x in pyenv unter Mac OSX 10.15.5 ein
Installieren Sie vim7.3 (+ python2.4) von der Quelle (kompatibel mit Gundo.vim)
Installieren Sie Python 3 unter MacOS Catalina (nur mit Homebrew)
Shpinx (Python Document Builder) unter Mac OS X.
[Blender x Python] Denken Sie an Code mit Symbolen
Installieren Sie LightGBM in einer virtuellen OSX-Umgebung
FizzBuzz in Python3
Scraping mit Python
Statistik mit Python
Scraping mit Python
Python mit Go
Twilio mit Python
In Python integrieren
Lokale Installation von Python
Spielen Sie mit 2016-Python
AES256 mit Python