J'utilise OS X El Capitan (10.11.4).
Je viens de télécharger TensorFlow en utilisant les instructions d’installation de pip ici .
Tout s'est bien passé, même si j'ai reçu quelques messages d'avertissement tels que:
The directory '/Users/myusername/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with Sudo, you may want the -H flag.
et
You are using pip version 6.0.8, however version 8.1.2 is available.
Même si je viens d'installer pip.
Ensuite, quand j'ai testé TensorFlow en Python, j'ai eu l'erreur:
>>> import tensorflow as tf
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/tensorflow/__init__.py", line 23, in <module>
from tensorflow.python import *
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/tensorflow/python/__init__.py", line 48, in <module>
from tensorflow.python import pywrap_tensorflow
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/tensorflow/python/pywrap_tensorflow.py", line 28, in <module>
_pywrap_tensorflow = swig_import_helper()
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/tensorflow/python/pywrap_tensorflow.py", line 24, in swig_import_helper
_mod = imp.load_module('_pywrap_tensorflow', fp, pathname, description)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/imp.py", line 243, in load_module
return load_dynamic(name, filename, file)
ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/tensorflow/python/_pywrap_tensorflow.so, 10): Library not loaded: @rpath/libcudart.7.5.dylib
Referenced from: /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/tensorflow/python/_pywrap_tensorflow.so
Reason: image not found
Maintenant, quand j'essaie de faire pip uninstall tensorflow-0.10.0rc0
, il me dit qu'il n'est pas installé.
La chose la plus proche que j'ai trouvée pour ressembler à ce problème est ce problème dans la documentation TensorFlow GitHub (que je n'ai pas essayée).
Comment puis-je désinstaller ce qu'il a réellement installé et obtenir le bon fonctionnement de TensorFlow?
Ce message d'erreur s'affiche si vous installez la version Mac OS compatible avec le GPU de TensorFlow (disponible à partir de la version 0.10) sur un ordinateur sur lequel CUDA n'est pas installé.
Pour corriger l'erreur, installez la version de la CPU pour Python 2.7 ou 3.x en procédant comme suit:
# Mac OS X, CPU only, Python 2.7:
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-0.12.0-py2-none-any.whl
$ Sudo pip install --upgrade $TF_BINARY_URL
# Mac OS X, CPU only, Python 3.4 or 3.5:
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-0.12.0-py3-none-any.whl
$ Sudo pip3 install --upgrade $TF_BINARY_URL
Voir les versions de tensorflow: https://www.tensorflow.org/versions/
Pour ajouter à la réponse de @ mrry , si CUDA est déjà installé mais que l'erreur persiste, cela peut être dû au fait que les bibliothèques CUDA ne se trouvent pas sur votre chemin. Ajoutez les éléments suivants à votre ~/.bashrc ou ~/.zshrc:
# export CUDA_HOME=/Developer/NVIDIA/CUDA-7.5 ## This is the default location on macOS
export CUDA_HOME=/usr/local/cuda
export DYLD_LIBRARY_PATH="$CUDA_HOME/lib:$DYLD_LIBRARY_PATH"
export PATH="$CUDA_HOME/bin:$PATH"
Décommentez l'un des CUDA_HOME
s ou modifiez-le pour qu'il contienne votre installation CUDA. Si vous ne savez pas où il est installé, essayez:
find / -name "*libcudart*"
Il est essentiel d’installer CUDA, tout comme de s’assurer que tous les chemins sont corrects. Je suis entrain de courir:
J'ai également rencontré d'autres problèmes sur mon système, qui semblent provenir des bibliothèques dynamiques référençant en interne les chemins relatifs.
Pour découvrir que le @rpath
étant référencé à partir de _pywrap_tensorflow.so
, le code suivant est exécuté:
otool -l /Users/norman_h/.virtualenvs/env_name/lib/python2.7/site-packages/tensorflow/python/_pywrap_tensorflow.so
qui a retourné, entre autres, ce qui suit:
Load command 15
cmd LC_RPATH
cmdsize 128
path $Origin/../../_solib_darwin/_U@local_Uconfig_Ucuda_S_Scuda_Ccudart___Uexternal_Slocal_Uconfig_Ucuda_Scuda_Slib (offset 12)
Load command 16
cmd LC_RPATH
cmdsize 48
path ../local_config_cuda/cuda/lib (offset 12)
Load command 17
cmd LC_RPATH
cmdsize 56
path ../local_config_cuda/cuda/extras/CUPTI/lib (offset 12)
On peut voir que la bibliothèque dynamique tente de trouver les bibliothèques CUDA dans mon environnement virtuel où j'ai installé TensorFlow avec pip. Cela ne regarde pas dans les chemins de mon environnement système.
Un bidouillage de solution consiste à relier dynamiquement les bibliothèques CUDA de leur emplacement /usr/local/cuda/lib
aux packages de site où pip a installé TensorFlow dans mon environnement virtuel.
mkdir /Users/norman_h/.virtualenvs/env_name/lib/python2.7/site-packages/tensorflow/local_config_cuda
cd /Users/norman_h/.virtualenvs/env_name/lib/python2.7/site-packages/tensorflow/local_config_cuda
ln -s /usr/local/cuda .
Il sera nécessaire de rétablir la liaison lorsque pip met à niveau TensorFlow à partir de l'environnement virtuel.
Je pense que tout cela remonte à la compilation originale de TensorFlow qui est faite pour l’installation du pip et je ne sais pas comment soumettre un correctif, ni même si j’ai raison. Peut-être que la compilation originale de Tensorflow doit être plus dynamique et non statique.
Bonne chance!