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, которая явно упоминается в сообщении трассировки стека, вы можете использовать этот подход, чтобы точно определить проблему:
Используйте анализатор зависимостей DLL Зависимости для анализа
<Your Python Dir>\Lib\site-packages\tensorflow\python\_pywrap_tensorflow_internal.pyd
и определить точную отсутствующую DLL (обозначенную?
рядом с DLL).Найдите информацию об отсутствующей 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-ответа.
Примечание: эта ссылка на список различных версий у меня не работала.