Tensorflow TypeError:预期的字节,找到描述符

时间:2019-12-11 10:54:53

标签: tensorflow machine-learning anaconda

我一直在遵循本教程使用机器学习来识别对象:

https://www.youtube.com/watch?v=Rgpfk6eYxJA

我已按照有关安装内容和安装方法的所有说明进行了操作,包括此相关教程中的说明:

https://www.youtube.com/watch?v=RplXYjxgZbw

我尝试了它们的版本和该软件的最新可用版本。除了我这样创建虚拟环境:

conda create -n tensorflow1 pip python=3.6

因为tensorflow模块尚未与python 3.7兼容。

在我安装了所有需要的软件包之后,也在这里进行描述:

https://github.com/EdjeElectronics/TensorFlow-Object-Detection-API-Tutorial-Train-Multiple-Objects-Windows-10

2d下。设置新的Anaconda虚拟环境

浏览视频中的代码,我在运行时遇到错误

python generate_tfrecord.py --csv_input=images\train_labels.csv --image_dir=images\train --output_path=train.record

该视频正在19:35播放。

错误是

2019-12-11 10:13:43.410540: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'cudart64_100.dll'; dlerror: cudart64_100.dll not found
Traceback (most recent call last):
  File "generate_tfrecord.py", line 17, in <module>
    import tensorflow as tf
  File "C:\Anaconda\envs\tensorflow1\lib\site-packages\tensorflow\__init__.py", line 98, in <module>
    from tensorflow_core import *
  File "C:\Anaconda\envs\tensorflow1\lib\site-packages\tensorflow_core\__init__.py", line 40, in <module>
    from tensorflow.python.tools import module_util as _module_util
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 947, in _find_and_load_unlocked
  File "C:\Anaconda\envs\tensorflow1\lib\site-packages\tensorflow\__init__.py", line 50, in __getattr__
    module = self._load()
  File "C:\Anaconda\envs\tensorflow1\lib\site-packages\tensorflow\__init__.py", line 44, in _load
    module = _importlib.import_module(self.__name__)
  File "C:\Anaconda\envs\tensorflow1\lib\importlib\__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "C:\Anaconda\envs\tensorflow1\lib\site-packages\tensorflow_core\python\__init__.py", line 52, in <module>
    from tensorflow.core.framework.graph_pb2 import *
  File "C:\Anaconda\envs\tensorflow1\lib\site-packages\tensorflow_core\core\framework\graph_pb2.py", line 16, in <module>
    from tensorflow.core.framework import node_def_pb2 as tensorflow_dot_core_dot_framework_dot_node__def__pb2
  File "C:\Anaconda\envs\tensorflow1\lib\site-packages\tensorflow_core\core\framework\node_def_pb2.py", line 16, in <module>
    from tensorflow.core.framework import attr_value_pb2 as tensorflow_dot_core_dot_framework_dot_attr__value__pb2
  File "C:\Anaconda\envs\tensorflow1\lib\site-packages\tensorflow_core\core\framework\attr_value_pb2.py", line 16, in <module>
    from tensorflow.core.framework import tensor_pb2 as tensorflow_dot_core_dot_framework_dot_tensor__pb2
  File "C:\Anaconda\envs\tensorflow1\lib\site-packages\tensorflow_core\core\framework\tensor_pb2.py", line 16, in <module>
    from tensorflow.core.framework import resource_handle_pb2 as tensorflow_dot_core_dot_framework_dot_resource__handle__pb2
  File "C:\Anaconda\envs\tensorflow1\lib\site-packages\tensorflow_core\core\framework\resource_handle_pb2.py", line 16, in <module>
    from tensorflow.core.framework import tensor_shape_pb2 as tensorflow_dot_core_dot_framework_dot_tensor__shape__pb2
  File "C:\Anaconda\envs\tensorflow1\lib\site-packages\tensorflow_core\core\framework\tensor_shape_pb2.py", line 112, in <module>
    '__module__' : 'tensorflow.core.framework.tensor_shape_pb2'
TypeError: expected bytes, Descriptor found

当我运行14:25视频中出现的导入时,这个问题与jupyter内核中出现的问题相同

我该如何解决

  

TypeError:预期的字节,找到描述符

错误?

这是怎么回事

  

无法加载动态库'cudart64_100.dll'; dlerror:找不到cudart64_100.dll

那还会出现吗?

在第二个教程中,我还可以与您分享此内容,即安装tensorflow-gpu库。在为cuDNN创建一个帐户并按照题名下载它之后,我只会得到一个 cudnn64_7.dll < / strong>文件C:\ cuda \ bin中的文件,该文件也位于我的系统路径环境变量中

  • C:\ Program Files \ NVIDIA GPU计算工具包\ CUDA \ v10.1 \ bin
  • C:\ Program Files \ NVIDIA GPU计算工具包\ CUDA \ v10.1 \ libnvvp和
  • C:\ Program Files \ NVIDIA GPU计算工具包\ CUDA \ v10.1 \ extras \ CUPTI \ lib64,

按照教程中的说明进行操作。如您所见,我的Cuda和cuDNN版本为10.1,路径有些不同。 GPU驱动程序也已更新。

P.S。在tensorflow安装教程中,测试代码也不起作用。

这是我想提供的所有信息。

到目前为止,我一直在努力解决此问题4-5天(这不是我第一次观看为图像识别神经网络获取.record文件的视频)

以及TypeError: expected bytes, Descriptor found或stackoverflow上任何其他位置提供的针对此特定问题的解决方案都没有用。

我该怎么办?

P.S。我拥有的tensorflow-gpu版本是2.0.0,它可能与Cuda和cuDNN不兼容。这可能就是为什么我只有cudnn64_7.dll文件而不是cudart64_100.dll文件的原因。如果没有其他解决方案,我将安装tensorflow 1.5并再次尝试该软件。

但是,如果有人有其他解决方案,请张贴。如果有效,我会发表回复。如果没有,我将对其进行编辑。

1 个答案:

答案 0 :(得分:0)

我遵循了不同的教程,但是遇到了相同的错误。 如果有人仍然在想,我已经通过将tensorflow版本从原来的1.5更新为1.15来解决了这个问题

pip install --ignore-installed --upgrade tensorflow-gpu==1.15.0

这是我想到from的想法的官方问题。

第二部分

Could not load dynamic library 'cudart64_100.dll'; dlerror: cudart64_100.dll not found

这是CUDA驱动程序的问题。简而言之,在tensorflow和您的GPU之间存在兼容性问题。在大多数情况下,不必担心太多,因为默认情况下,它将使用GPU上的CPU来训练模型。如果您真的想使用GPU(以获得更好的性能等),请检查它是否受支持。您可以检查类似询问的question,也可以从official source检查。

或者,由于您已经按照官方documentation安装了CUDA 10.1,因此您需要升级tensorflow 2.1.0或更高版本才能使其正常工作。

就我个人而言,我不得不选择在2.2.0上使用tensorflow 1.15并安装CUDA 9.0才能使所有内容运行。但是,我正在使用带有移动1050 GPU的笔记本电脑,无论如何,我都无法使其正常运行。