Невозможно импортировать тензорный поток при запуске скрипта с терминала, хотя тензорный поток работает в ноутбуке и терминале jupyter - PullRequest
1 голос
/ 19 июня 2020

TL; DR: когда я пишу небольшой скрипт с именем toy_model.py и пытаюсь запустить его из командной строки с помощью

py toy_model.py

, я получаю сообщение об ошибке с жалобой на загрузку тензорного потока.

Тем не менее, я могу без проблем использовать импорт и тензорный поток во многих других настройках, например

  • в записной книжке jupyter
  • , когда я импортирую toy_model.py в записную книжку jupyter
  • когда я использую python из командной строки

Я пробовал много рекомендуемых решений (загрузка Spyder в виртуальной среде Anaconda Navigator, которую я использую, переключение с tenorflow 2.1.0 в tenorflow 2.0.0, загрузив microsoft visual studio), и ни один из них не увенчался успехом.

Я был бы благодарен за любую помощь или понимание этой проблемы, которую я опишу более подробно ниже.

Я использую Anaconda Navigator для ввода кода Python. В Anaconda Navigator я подготовил среду с именем updated_tensorflow. Я использовал менеджер пакетов Anaconda, чтобы загрузить в эту среду tenorflow 2.0.0 и keras 2.3.1.

Я подготовил записную книжку jupyter с именем test1.ipynb со следующим кодом:

import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf
import keras
model = tf.keras.Sequential([
    tf.keras.layers.Dense(1, input_shape=(10,))])
model.compile(optimizer='adam',
          loss= 'sparse_categorical_crossentropy', #should be 'sparse_categorical_crossentropy' b/c one-hot encoded
          metrics=['accuracy'])
model.predict([[1,2,3,4,5,6,7,8,9,10], [-1,2,-3,4,-5,6,-7,8,-9,10]])

Когда Я запускаю test1.ipynb из среды updated_tensorflow, проблем нет.

В терминале я ввел среду updated_tensorflow и начал использовать python, набрав python в командной строке. Я ввел тот же код, что и в test1.ipynb, и проблем не возникло.

Я создаю файл с именем toy_model.py, содержащий следующий код:

import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf
import keras
model = tf.keras.Sequential([
    tf.keras.layers.Dense(1, input_shape=(10,))])
model.compile(optimizer='adam',
          loss= 'sparse_categorical_crossentropy', #should be 'sparse_categorical_crossentropy' b/c one-hot encoded
          metrics=['accuracy'])

Затем я создал другой блокнот jupyter в том же каталоге, что и toy_model1.py, с именем test2.ipynb и следующим кодом:

from toy_model1 import *
model.predict([[1,2,3,4,5,6,7,8,9,10], [-1,2,-3,4,-5,6,-7,8,-9,10]])

Эта ячейка работала без проблем.

Наконец, в этом же каталоге , Я создал небольшой файл с именем toy_model.py, который содержал код

import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf
import keras
model = tf.keras.Sequential([
    tf.keras.layers.Dense(1, input_shape=(10,))])
model.compile(optimizer='adam',
          loss= 'sparse_categorical_crossentropy', #should be 'sparse_categorical_crossentropy' b/c one-hot encoded
          metrics=['accuracy'])
model.predict([[1,2,3,4,5,6,7,8,9,10], [-1,2,-3,4,-5,6,-7,8,-9,10]])

Затем в своем терминале, все еще находясь в среде updated_tensorflow, я перешел в каталог, содержащий toy_model.py, и попытался запустите его с помощью

py toy_model.py

. Я получил следующее сообщение, в котором говорилось, что я не могу импортировать тензорный поток:

Traceback (most recent call last):
  File "C:\Users\me\Anaconda3\Anaconda3\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 58, in <module>
    from tensorflow.python.pywrap_tensorflow_internal import *
  File "C:\Users\me\Anaconda3\Anaconda3\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 28, in <module>
    _pywrap_tensorflow_internal = swig_import_helper()
  File "C:\Users\me\Anaconda3\Anaconda3\lib\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 "C:\Users\me\Anaconda3\Anaconda3\lib\imp.py", line 242, in load_module
    return load_dynamic(name, filename, file)
  File "C:\Users\me\Anaconda3\Anaconda3\lib\imp.py", line 342, in load_dynamic
    return _load(spec)
ImportError: DLL load failed: The specified module could not be found.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "toy_model.py", line 3, in <module>
    import tensorflow as tf
  File "C:\Users\me\Anaconda3\Anaconda3\lib\site-packages\tensorflow\__init__.py", line 41, in <module>
    from tensorflow.python.tools import module_util as _module_util
  File "C:\Users\me\Anaconda3\Anaconda3\lib\site-packages\tensorflow\python\__init__.py", line 50, in <module>
    from tensorflow.python import pywrap_tensorflow
  File "C:\Users\me\Anaconda3\Anaconda3\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 69, in <module>
    raise ImportError(msg)
ImportError: Traceback (most recent call last):
  File "C:\Users\me\Anaconda3\Anaconda3\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 58, in <module>
    from tensorflow.python.pywrap_tensorflow_internal import *
  File "C:\Users\me\Anaconda3\Anaconda3\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 28, in <module>
    _pywrap_tensorflow_internal = swig_import_helper()
  File "C:\Users\me\Anaconda3\Anaconda3\lib\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 "C:\Users\me\Anaconda3\Anaconda3\lib\imp.py", line 242, in load_module
    return load_dynamic(name, filename, file)
  File "C:\Users\me\Anaconda3\Anaconda3\lib\imp.py", line 342, in load_dynamic
    return _load(spec)
ImportError: DLL load failed: The specified module could not be found.


Failed to load the native TensorFlow runtime.

See https://www.tensorflow.org/install/errors

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

Некоторые из советов, которым я следовал в своих неудачных попытках исправить эту проблему, включают :

  • проверка обновления инструментов pip и настройки

  • удаление и переустановка tenorflow и keras с помощью pip

  • удаление и повторная установка ing tenorflow и keras с использованием conda

  • переключение с tenorflow 2.1.0 на tenorflow на 2.0.0

  • установка tenorflow и keras на мою базовую анаконду среда

  • установка tenorflow и keras на моем компьютере

  • загрузка Spyder в моем updated_tensorflow окружении

  • загрузка визуальных студий Microsoft Ни одна из них не увенчалась успехом.

Я был бы очень благодарен за любую помощь в понимании и исправлении любой ошибки, которую я делаю. Было бы так хорошо, если бы я мог использовать файлы run .py с моего терминала вместо использования python исключительно в записных книжках Jupyter!

Было бы полезно даже намек на то, что означает сообщение об ошибке: Я не правильно понять, что такое DLL.

Ответы [ 2 ]

1 голос
/ 06 июля 2020

Похоже, вызывая python, вы не получаете специфицированную c python установку, которая имеет тензорный поток (или тензорный поток в этой установке нарушен). По умолчанию, вызов python даст вам системное значение по умолчанию (это первое в пути к среде, так что это первое попадание).

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

/path/to/notebook/interpreter/python toy_model.py
0 голосов
/ 19 июня 2020

Попробуйте установить последнюю поддерживаемую версию Microsoft Visual C ++

...