Tensorflow 1.9 для CPU, без GPU по-прежнему требует cudNN - Windows

Я работаю на машине с Win10, с python 3.6.3 и использующей tenorflow 1.9, pip 18.0. Я не предоставлял опцию для установки tenorflow с gpu, (т.е.), по этой ссылке1 я использовал

    pip install tensorflow

и не предоставил опцию для использования GPU. Однако при попытке импортировать тензор потока я столкнулся со следующей ошибкой

    ModuleNotFoundError: No module named '_pywrap_tensorflow_internal'

Перейдя по различным ссылкам, link2, link3, я установил обновление 3 для Visual Studio, а также использовал скрипт самопроверки тензорного потока и обнаружил следующую ошибку:

    Could not load 'cudart64_80.dll'. .....
    Could not load 'nvcuda.dll' .......
    Could not load 'cudnn64_5.dll' ........

Почему мой Tensorflow ищет эти пакеты, когда я установил его без графического процессора? В моей системе сейчас нет графического процессора. Я попытался удалить и переустановить с обновленным pip 18.0, но проблема остается. Как это можно исправить.?

1 ответ

Сценарий самопроверки по этой ссылке помечен как "УСТАРЕЛО", поэтому он может не работать для последней версии (по крайней мере, не для TensorFlow 1.9 с графическим процессором, поскольку для этого потребуется cudart64_90.dll вместо cudart64_80.dll). Кроме того, скрипт просто проверяет все возможные недостающие файлы, которые могут понадобиться как для CPU, так и для версии GPU. В подробном сообщении указывается, какие файлы нужны только для версии GPU.

Сначала вы можете дважды проверить, что версия GPU не установлена, если вы не уверены в этом, выполнив pip show tensorflow-gpu, Там не должно быть ничего, если вы только установили версию процессора.

Вчера я столкнулся с проблемой при обновлении версии GPU с 1.8 до 1.9. Проблема может не совпадать с вашей, но может быть связана с тем, что моя проблема также была вызвана неудачным импортированием _pywrap_tensorflow_internal из-за сбоя загрузки DLL. Если ваша проблема также вызвана ошибкой загрузки DLL, которая явно упоминается в сообщении трассировки стека, вы можете использовать этот подход, чтобы точно определить проблему:

  1. Используйте анализатор зависимостей DLL Зависимости для анализа <Your Python Dir>\Lib\site-packages\tensorflow\python\_pywrap_tensorflow_internal.pyd и определить точную отсутствующую DLL (обозначенную ? рядом с DLL).

  2. Найдите информацию об отсутствующей DLL и установите соответствующий пакет для решения проблемы.

В моем случае недостающая библиотека VCOMP140.dll, которая является библиотекой Microsoft OpenMP и не требовалась в версии 1.8. Я установил VC++ Redistributable для VS 2017, и проблема решена.

Статус 2020-07-12: tensorflow-gpu интегрирован в обычную установку, что вызывает проблемы, как и в вашем случае. Это верно с версии 2.0.0 - см. Здесь, на github.

Огромный список различных колес / совместимости можно найти здесь, на github. Используя это, вы можете перейти на более раннюю версию почти до каждой доступной версии в сочетании с соответствующей версией для python. Например:

pip install tensorflow==2.0.0

(На что вы должны обратить внимание, так это на то, что вы не можете устанавливать произвольные версии tensorflow, они должны соответствовать вашей установке python. Поэтому до установки Python 3.7.8 вместе с 3.8.3 (или аналогично для вашего случая) вы получите

ERROR: Could not find a version that satisfies the requirement tensorflow==2.0.0 (from versions: 2.2.0rc1, 2.2.0rc2, 2.2.0rc3, 2.2.0rc4, 2.2.0, 2.3.0rc0, 2.3.0rc1)
ERROR: No matching distribution found for tensorflow==2.0.0

)

Помимо вашего варианта использования без графического процессора, это также должно быть полезно для устаревших процессоров без поддержки AVX и графических процессоров со слишком низкими вычислительными возможностями.


Если вам нужны только самые последние выпуски (что не похоже на ваш вопрос), список URL-адресов для текущих пакетов колеса доступен на этой странице tenorflow. Вот из этого SO-ответа.

Примечание: эта ссылка на список различных версий у меня не работала.

Другие вопросы по тегам