【问题标题】:Tensorflow TypeError: expected bytes, Descriptor foundTensorflow TypeError:预期字节,找到描述符
【发布时间】:2019-12-11 10:54:53
【问题描述】:

我一直在学习使用机器学习识别对象的教程:

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 文件位于我的系统路径环境变量中的 C:\cuda\bin 中,就像

  • C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin
  • C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\libnvvp 和
  • C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\extras\CUPTI\lib64,

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

附:在 tensorflow 安装教程中,测试代码也不起作用。

这是我认为我必须提供的所有信息。

此时我已经尝试解决这个问题 4-5 天(这不是我观看的第一个视频,用于获取图像识别神经网络的 .record 文件)

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

我该怎么办?

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

但是,如果有人有其他解决方案,请务必发布。如果有效,我会回复。如果没有,我会编辑它。

【问题讨论】:

  • 这有什么更新吗?我也被困在这里。我想知道我们是否使用不同版本的 tensorflow 和教程?

标签: tensorflow machine-learning anaconda


【解决方案1】:

我遵循了不同的教程,但是遇到了相同的错误。 如果有人仍然想知道,我已经通过将 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 驱动程序的问题。简而言之,张量流和您的 GPU 之间存在兼容性问题。在大多数情况下,不要太担心,因为它会默认使用 CPU 而不是 GPU 来训练模型。如果您真的想使用 GPU(以获得更好的性能等),请检查它是否受支持。您可以通过questionofficial source 查询类似的问题。

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

就个人而言,我不得不选择使用 tensorflow 1.15 而不是 2.2.0 并安装 CUDA 9.0 以使一切正常运行。但是,我正在使用带有移动 1050 GPU 的笔记本电脑,无论如何,我无法让它运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-18
    • 2022-06-11
    • 2019-06-11
    • 2017-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多