【问题标题】:ImportError: cannot import name 'abs'ImportError:无法导入名称“abs”
【发布时间】:2018-12-20 07:18:17
【问题描述】:

我在使用 tensorflow-gpu 进行对象检测时遇到问题

我正在关注 youtube 教程 :https://www.youtube.com/watch?v=Rgpfk6eYxJA

我正在尝试使用带有虚拟环境的 tensorflow-gpu 检测对象。

我在系统环境变量中添加了python、cuda、tensorflow,也做了 制作带标签的训练模型。

我使用 xml_to_csv.py 将 xml 标签转换为 csv。

问题是当我尝试使用 generate_tfrecord.py 生成 tfrecord 时,会出现该错误。请帮忙

这是代码

(tensorflow) C:\Users\ice305\tensorflow\models\research\object_detection>python generate_tfrecord.py --csv_input=images\train_labels.csv --image_dir=images\train --output_path=train.record
Traceback (most recent call last):
  File "generate_tfrecord.py", line 17, in <module>
    import tensorflow as tf
  File "C:\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\__init__.py", line 22, in <module>
    from tensorflow.python import pywrap_tensorflow  # pylint: disable=unused-import
  File "C:\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\__init__.py", line 81, in <module>
    from tensorflow.python import keras
  File "C:\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\keras\__init__.py", line 24, in <module>
    from tensorflow.python.keras import activations
  File "C:\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\keras\activations\__init__.py", line 22, in <module>
    from tensorflow.python.keras._impl.keras.activations import elu
  File "C:\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\keras\_impl\keras\__init__.py", line 21, in <module>
    from tensorflow.python.keras._impl.keras import activations
  File "C:\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\keras\_impl\keras\activations.py", line 23, in <module>
from tensorflow.python.keras._impl.keras import backend as K
  File "C:\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\keras\_impl\keras\backend.py", line 38, in <module>
    from tensorflow.python.layers import base as tf_base_layers
  File "C:\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\layers\base.py", line 25, in <module>
    from tensorflow.python.keras.engine import base_layer
  File "C:\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\keras\engine\__init__.py", line 21, in <module>
    from tensorflow.python.keras.engine.base_layer import InputSpec
  File "C:\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\keras\engine\base_layer.py", line 33, in <module>
    from tensorflow.python.keras import backend
  File "C:\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\keras\backend\__init__.py", line 22, in <module>
    from tensorflow.python.keras._impl.keras.backend import abs
ImportError: cannot import name 'abs'
(tensorflow) C:\Users\ice305\tensorflow\models\research\object_detection>

我不明白“abs”是什么。请帮忙

【问题讨论】:

  • 你能说你想做什么吗?不是每个人都会尝试通过观看视频来了解您的问题
  • 我正在尝试使用带有虚拟环境的 tensorflow-gpu 检测对象。我在系统环境变量中添加了 python、cuda、tensorflow,并且还制作了带有标签的训练模型。我使用 xml_to_csv.py 将 xml 标签转换为 csv。问题是当我尝试使用 generate_tfrecord.py 生成 tfrecord 时,会出现该错误。请帮忙

标签: tensorflow anaconda virtualenv


【解决方案1】:

我在尝试 seq2seq 教程时遇到了同样的错误消息。我使用了 tensorflow-cpu、python3.6、Anaconda3 和 Ubuntu16.04。

问题是 tensorflow 的路径在我的 PC 上没有变化。 我无法导入 tensorflow,尽管几个小时前我可以。 在 python 交互式 shell 上尝试“import tensorflow”。如果你不能导入它,你的问题和我的一样。

解决问题的方法是删除计算机上有关 tensorflow 的所有内容并重新安装。

顺便说一下,'abs' 是在以下文件中定义的函数:~/anaconda3/envs/tensorflow/lib/python3.6/site\ -packages/tensorflow/python/keras/_impl/keras/backend.py

而且重新安装tensorflow后,不知道为什么,“_impl”目录消失了。

【讨论】:

    【解决方案2】:

    这是因为你已经安装了一些库,并且 tensorflow 的一些依赖项已经被安装的库更改了。

    执行以下命令即可解决问题

    sudo pip install --upgrade tensorflow-gpu
    

    【讨论】:

      【解决方案3】:

      如果之前安装的 tensorflow 可用,这似乎是个问题。这些步骤似乎可以解决问题。

      1) 卸载张量流 2)卸载protobuf 3) 重新安装 tensorflow(应该附带正确的 protobuf 版本。

      还需要去

      C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\Lib\site-packages
      

      并删除所有 tensorflow 相关文件夹

      来源:https://github.com/tensorflow/tensorflow/issues/20778

      【讨论】:

        【解决方案4】:

        这在 ubuntu 18.0.4 中对我有用

        pip uninstall tensorflow protobuf --yes
        find $CONDA_PREFIX -name "tensorflow" | xargs -Ipkg rm -rfv pkg
        pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.9.0-cp36-cp36m-linux_x86_64.whl --no-cache-dir
        

        从GitHub: ImportError: cannot import name 'abs' #20778找到的解决方案。

        【讨论】:

          【解决方案5】:
          • 编辑:

          创建一个虚拟环境并安装 TF-GPU,它更快更安全。

          • 原答案:

          操作系统:Ubuntu 18.04.1

          Python 3.6 版

          解决方案:

          已卸载 tensorflow 1.10

          python3 -m pip uninstall tensorflow

          重新安装一遍

          python3 -m pip install tensorflow==1.8.0

          此问题是由旧版本的 tensorflow 依赖项(如 protobuff 和其他在 tensorflow 安装期间安装的)造成的,因此如果您想使用 tensorflow 1.10,您必须卸载其余的依赖项或升级它们。

          如果你想安装 1.10.1 那么你必须删除这些包

          absl-py
          astor
          gast 
          grpcio 
          markdown 
          numpy 
          protobuf 
          setuptools 
          six 
          tensorboard 
          tensorflow 
          termcolor 
          werkzeug 
          wheel
          protobuf
          

          然后做sudo python3 -m pip uninstall tensorflow 如果在 root 用户中安装了 tensorflow,则使用 python3 -m pip install tensorflow --user --no-cache

          如果您仍然遇到此问题,请重复上述所有步骤并执行 find ~/ -name tensorflow 并删除所有弹出的文件夹并重试安装。

          【讨论】:

            【解决方案6】:

            以下链接上的建议解决方案对我有用

            https://github.com/tensorflow/tensorflow/issues/20778#issuecomment-410962482

            The full solution to this issue is to clean up all TF installation files from your system. Here is how to do that. Run the following first:
            
            $ pyhthon
            > import tensorflow as tf
            > tf.__file__
            'path/to/your/python/installation/site-packages/tensorflow/__init__.pyc'
            
            From the above command, you need to go and remove the folder
            
            path/to/your/python/installation/site-packages/tensorflow
            
            Finally, you need to run
            
            $ pip uninstall tensorflow # Also add -gpu if you installed the GPU version
            $ pip install tensorflow # Also add -gpu if you installed the GPU version
            
            Then it should work.
            

            【讨论】:

              【解决方案7】:

              如果你用的是Win10+cuda_10.0+cuDNNv7.4.2.24,跟着这个对你有帮助!

              1. 卸载所有 tensorflow 和 keras 相关。
              2. 卸载所有 protobuf 相关。
              3. 删除 'Anaconda3_install_path'\Lib\site-packages 中与 tensorflow、keras、protobuf 相关的折叠,例如 E:\ProgramData\Anaconda3\Lib\site-packages。
              4. 安装 tensorflow 和 keras 如下图所示。

              【讨论】:

                【解决方案8】:

                使用 anaconda Navigator 安装并选择可用于 tensorflow 和 keras 的所有软件包时,在 Windows 10 中遇到了同样的问题。

                解决方案是从命令行清理和安装,使用“conda install”只选择“gpu”包:

                conda remove keras*
                conda remove tensorflow*
                conda remove protobuf 
                pip uninstall tensorflow*
                pip uninstall protobuf
                conda install tensorflow-gpu
                conda install keras-gpu
                

                【讨论】:

                  【解决方案9】:

                  这个问题大多来自于 pip(python 包管理器)的异常动作

                  在我的情况下,我的一个名为 protobuf 的包在使用 pip 卸载命令删除时存在问题。所以,我手动完成了,然后我可以正确使用 tensorflow。

                  希望这对某人有所帮助。

                  【讨论】:

                    猜你喜欢
                    • 2019-12-15
                    • 1970-01-01
                    • 2016-03-31
                    • 2014-10-10
                    • 2014-09-20
                    • 2014-08-28
                    • 2014-06-10
                    • 2016-05-16
                    • 2019-05-25
                    相关资源
                    最近更新 更多