在从MATLAB调用的Python模块中导入Tensorflow

在从MATLAB调用的Python模块中导入Tensorflow,python,linux,matlab,tensorflow,anaconda,Python,Linux,Matlab,Tensorflow,Anaconda,这里是设置和我要做的 背景 Ubuntu Linux 14.04 LTS MATLAB R2016a Anaconda 4.1.1(Python 2.7版本) Tensorflow r0.10(支持GPU)在名为TF的Conda虚拟环境中 直接从Python调用Tensorflow时效果良好。我的问题是调用一个Python模块,该模块使用MATLAB中的Tensorflow 使用pyversion我更改了MATLAB用作Python解释器的可执行文件。它指向/anaconda2/envs/TF/

这里是设置和我要做的

背景

  • Ubuntu Linux 14.04 LTS
  • MATLAB R2016a
  • Anaconda 4.1.1(Python 2.7版本)
  • Tensorflow r0.10(支持GPU)在名为TF的Conda虚拟环境中
  • 直接从Python调用Tensorflow时效果良好。我的问题是调用一个Python模块,该模块使用MATLAB中的Tensorflow

    使用
    pyversion
    我更改了MATLAB用作Python解释器的可执行文件。它指向
    /anaconda2/envs/TF/bin/python
    。为了检查执行是否正确,我创建了以下python模块:

    #myMod
    def Foo(n):
        return n
    
    在MATLAB命令行中,
    py.myMod.Foo(n)
    工作正常。 现在我修改模块以导入tensorflow:

    #myMod2
    import tensorflow as tf
    
    def Foo(n):
        return n
    
    在MATLAB命令行中,
    py.myMod2.Foo(n)
    阻塞MATLAB。我在MATLAB窗口的左下角看到忙信号。就这样,好像它陷入了一个无限循环

    最后,请注意:

  • 其他导入语句工作正常。例如,将
    导入tensorflow作为tf
    替换为
    导入numpy作为np
    并键入
    py.myMod2.Foo(n)
  • 我成功地实现了以下部分解决方案(将MATLAB目录中的
    libstdc++.so.6
    libstdc++.so.6.0.17
    替换为TF环境中的解决方案):

  • 现在,从MATLAB提示符:

    name = 'myScript.py';
    cmd = ['source activate TF; python ', cd, '/', name, '; source deactivate'];
    [status, commandOut] = unix(cmd);
    
    此解决方案只是一种变通方法,因为它委托UNIX来完成这项工作。此外,它完全忽略了MATLAB和Python之间的变量传递

    有什么想法吗

    谢谢


    EC

    你找到这个问题的解决方案了吗?因为我有同样的问题。你找到这个问题的解决方案了吗?因为我有同样的问题
    name = 'myScript.py';
    cmd = ['source activate TF; python ', cd, '/', name, '; source deactivate'];
    [status, commandOut] = unix(cmd);