2017-08-17 3 views
2

Ich versuche ein Python-Skript zu verwenden, das Keras/Tensorflow als Teil eines größeren Matlab-Projekts verwendet. Matlab kann Python-Module problemlos ausführen. Das Ausführen der Python-Skripts direkt vom Terminal funktioniert einwandfrei. Aber die beiden nicht auf eine interessante Weise kombiniert:Importieren von Tensorflow in Matlab über Python-Schnittstelle

Matlab:

% tensorflowTest.m 
mod = py.importlib.import_module('tensorf'); 
py.importlib.reload(mod); 

Der Python:

# tensorf.py 
import tensorflow 

Das Ergebnis:

Error using pywrap_tensorflow><module> (line 52) 
Python Error: ImportError: Traceback (most recent call last): 
    File "/home/cfedk/shared/anaconda3/envs/keras/lib/python3.5/site-packages/tensorflow/python/pywrap_tensorflow.py", line 41, in <module> 
    from tensorflow.python.pywrap_tensorflow_internal import * 
    File "/home/cfedk/shared/anaconda3/envs/keras/lib/python3.5/site-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 28, in <module> 
    _pywrap_tensorflow_internal = swig_import_helper() 
    File "/home/cfedk/shared/anaconda3/envs/keras/lib/python3.5/site-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 24, in swig_import_helper 
    _mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description) 
    File "/home/cfedk/shared/anaconda3/envs/keras/lib/python3.5/imp.py", line 242, in load_module 
    return load_dynamic(name, filename, file) 
    File "/home/cfedk/shared/anaconda3/envs/keras/lib/python3.5/imp.py", line 342, in load_dynamic 
    return _load(spec) 
ImportError: libcudnn.so.6: cannot open shared object file: No such file or directory 


Failed to load the native TensorFlow runtime. 

See https://www.tensorflow.org/install/install_sources#common_installation_problems 

for some common reasons and solutions. Include the entire stack trace 
above this error message when asking for help. 

Error in __init__><module> (line 49) 
from tensorflow.python import pywrap_tensorflow 

Error in __init__><module> (line 24) 
from tensorflow.python import * 

Error in tensorf><module> (line 1) 
import tensorflow 

Error in <frozen importlib>_call_with_frames_removed (line 222) 

Error in <frozen importlib>exec_module (line 678) 

Error in <frozen importlib>_load_unlocked (line 673) 

Error in <frozen importlib>_find_and_load_unlocked (line 958) 

Error in <frozen importlib>_find_and_load (line 969) 

Error in <frozen importlib>_gcd_import (line 986) 

Error in __init__>import_module (line 126) 
    return _bootstrap._gcd_import(name[level:], package, level) 

was interessant ist, weil ImportError: libcudnn.so.6: cannot open shared object file: No such file or directory ist etwas, das wir vor der Installation von libcuddn oder wenn LD_LIBRARY_PATH nicht sehen richtig eingestellt.

Dies geschieht auch, wenn das Importieren tensorflow direkt: py.importlib.import_module('tensorflow');

ich dies zu einem RPC/separaten Prozess zurückgreifen würde es vorziehen. Fehle ich etwas Offensichtliches?

+0

Haben Sie nach generischen Python-on-MATLAB-envvar/Pfad-Shenanigans gegoogelt? Könnte ein allgemeineres Problem sein. –

+0

Sieht so aus, als ob Matlab LD_LIBRARY_PATH auf seine eigenen Sachen zurücksetzt - anstatt auf irgendetwas zu setzen, was in bashrc eingestellt ist. Das Hinzufügen von cudas Lib-Ordner über setenv oder in Python über os.environ löst leider nichts. – KendallV

+1

Problem startete Matlab von einem Launcher. Ausgehend von Bash funktioniert. Offensichtlicher Fehler. – KendallV

Antwort

1

Starten von Matlab von einem Terminal oder Einstellung LD_LIBRARY_PATH im Launcher löst dies.

Verwandte Themen