Недопустимая инструкция (ядро сброшено) с Tensorflow 1.5 - PullRequest
1 голос
/ 18 марта 2019

У меня есть скрипт Python для запуска модели тензорного потока, и мне нужно запустить этот скрипт из файла PHP (по сложным причинам) с помощью функции PHP shell_exec. Когда я запускаю файл python со следующим кодом:

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

Я получаю следующую ошибку: Illegal instruction (core dumped)

Я прочитал, что проблема обычно возникает, когда процессор не поддерживает инструкции, которые присутствуют в более новых версиях Tensorflow. Поэтому я понизил до Tensorflow 1.5.

Однако эта ошибка не возникает, когда я запускаю cd testModels/crosswalkPredict && . activate keras && python test_script.py прямо из терминала; это происходит только тогда, когда я запускаю его из функции PHP shell_exec.

Я зашел так далеко, что попробовал скрипт на python только со следующими строками:

import tensorflow
print('Hello!')

По-прежнему выдает ту же ошибку, поэтому я знаю, что проблема возникает, когда все, что я делаю, - это импортирование tenorflow и запуск сценария с shell_exec.

В чем может быть проблема?

Ответы [ 2 ]

0 голосов
/ 01 апреля 2019

Я разобрался в проблеме.как я упоминал в нескольких комментариях, я использую виртуальную среду Python.Когда я выполнял скрипт python из командной строки, использовался интерпретатор python из виртуальной среды python, и все было хорошо.Всякий раз, когда я выполнял скрипт rom shell_exec, использовалась установка по умолчанию интерпретатора python, и именно здесь произошла ошибка.

Я не очень опытен в использовании виртуальных сред Python, поэтому, вероятно, мне понадобилось так много времени, чтобы прийти к пониманию проблемы.К счастью, комментарий MohammedAyoubBENJELLOUN о shell_exec с использованием установки Python по умолчанию поставил меня на правильный путь, и я понял это оттуда.

Чтобы решить эту проблему, я просто вызвал интерпретатор python на пути интерпретатора внутривиртуальной среды Python вместо того, чтобы пытаться активировать виртуальную среду и затем выполнять.

Например, я использовал:

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

Вместо:

. activate keras && python test_script.py
0 голосов
/ 19 марта 2019

Это известная проблема совместимости TensorFlow с поддержкой AVX на старых процессорах, ее можно исправить, если вы скомпилируете TensorFlow из источников:

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...