【问题标题】:Illegal Instruction (core dumped) with Tensorflow 1.5Tensorflow 1.5 的非法指令(核心转储)
【发布时间】:2019-03-18 16:49:48
【问题描述】:

我有一个用于运行 tensorflow 模型的 python 脚本,我需要使用 PHP shell_exec 函数从 PHP 文件(出于复杂原因)运行此脚本。当我使用以下代码运行 python 文件时:

$command = 'cd testModels/crosswalkPredict && . activate keras && python test_script.py';
$output = shell_exec($command);

我收到以下错误:Illegal instruction (core dumped)

我了解到,当 CPU 不支持较新版本的 Tensorflow 中存在的指令时,通常会出现此问题。所以我降级到 TensorFlow 1.5。

但是,当我直接从终端运行cd testModels/crosswalkPredict && . activate keras && python test_script.py 时,不会出现此错误;它仅在我从 PHP shell_exec 函数中运行时发生。

我已经尝试了仅使用以下几行的 python 脚本:

import tensorflow
print('Hello!')

它仍然给出相同的错误,所以我知道当我所做的只是导入 tensorflow 并使用 shell_exec 运行脚本时会出现问题。

可能是什么问题?

【问题讨论】:

  • 你能运行任何其他的shell命令吗?以ls -la 为例
  • 我可以毫无问题地运行其他 shell 命令。我只在运行使用 tensorflow/keras 的脚本时遇到错误。
  • 例如,在带有 print(Hello) 的最小化脚本中,如果我注释掉“import tensorflow”行,一切正常。
  • 您的testModels 文件夹在哪里?它属于你的 php 项目吗?尝试用文件的完整路径替换该部分
  • 我的PHP文件,名为crosswalkPredict.php,位于/home/user01/Desktop/transportation,我的testModels文件夹位于同一目录下(/home/user01/Desktop/transportation)。

标签: php python ubuntu tensorflow


【解决方案1】:

这是一个已知的 TensorFlow 兼容性问题,它在旧 CPU 上支持 AVX,如果您从源代码编译 TensorFlow,则可以修复它:

https://github.com/tensorflow/tensorflow/issues/17411#issuecomment-386888244

https://github.com/tensorflow/tensorflow/issues/17411#issuecomment-420157421

【讨论】:

  • 如果我尝试运行一个使用 TensorFlow 的 python 脚本,并且我直接从命令行运行它,它会完美运行,而如果我使用 shell_exec() 运行它,我会收到错误消息。如果我从命令行运行它时没有收到错误,是否仍然可能是 CPU 兼容性问题?
【解决方案2】:

我发现了问题所在。正如我在几个 cmets 中提到的,我使用的是 python 虚拟环境。当我从命令行执行 python 脚本时,正在使用 python 虚拟环境中的 python 解释器,一切都很好。每当我执行脚本 rom shell_exec 时,都会使用默认安装的 python 解释器,这就是发生错误的地方。

我在使用 python 虚拟环境方面不是很有经验,所以这可能是我花了这么长时间才理解问题的原因。幸运的是,MohammedAyoubBENJELLOUN 关于使用默认 python 安装的 shell_exec 的评论让我走上了正确的道路,我从那里弄清楚了。

为了解决这个问题,我只是在python虚拟环境中的解释器路径处调用了python解释器,而不是尝试激活虚拟环境然后执行。

例如,我用过:

/home/user01/anaconda3/envs/keras/bin/python test_script.py

代替:

. activate keras && python test_script.py

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-19
    • 2018-08-12
    • 2018-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多