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

2024-06-23 03:29:40 发布

您现在位置:Python中文网/ 问答频道 /正文

这是背景和我要做的。在

设置

  1. Ubuntu Linux 14.04 LTS
  2. MATLAB R2016a
  3. Anaconda 4.1.1(Python 2.7版本)
  4. Tensorflow r0.10(启用GPU)在名为TF的Conda虚拟环境中

当直接从Python调用Tensorflow时,它工作得很好。我的问题是调用一个使用MATLAB中Tensorflow的Python模块。在

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

#myMod
def Foo(n):
    return n

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

^{pr2}$

从MATLAB命令行,py.myMod2.Foo(n)阻塞MATLAB。我在MATLAB窗口的左下角看到信号。就这样,好像卡在了一个无限循环中。在

最后,请注意:

  1. 其他导入语句可以正常工作。将cd6{cd6}替换为
  2. 我成功地实现了以下部分解决方案(在用found the TF environment中找到的MATLAB目录中的libstdc++.so.6和{}替换之后):

    #myScript
    import myMod2 as m
    
    n = 5
    result = m.Foo(n)
    

现在,从MATLAB提示符:

name = 'myScript.py';
cmd = ['source activate TF; python ', cd, '/', name, '; source deactivate'];
[status, commandOut] = unix(cmd);

这个解决方案只是一个解决方案,因为它委托UNIX来完成这项工作。此外,它完全忽略了MATLAB和Python之间的变量传递。在

有什么想法吗?在

谢谢!在

欧共体


Tags: 模块命令行namepycmdsourcefootf

热门问题