ImportError:无法导入名称“ abs”

时间:2018-07-12 07:01:59

标签: tensorflow anaconda virtualenv cudnn

使用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”。请帮助

9 个答案:

答案 0 :(得分:16)

这在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找到的解决方案。

答案 1 :(得分:8)

操作系统: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并删除弹出的每个文件夹,然后重试安装。

答案 2 :(得分:6)

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

1)卸载tensorflow 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

答案 3 :(得分:1)

如果您使用Win10 + cuda_10.0 + cuDNNv7.4.2.24,请按照以下说明对您有帮助!

  1. 卸载所有相关的tensorflow和keras。
  2. 卸载所有与protobuf相关的内容。
  3. 在您的'Anaconda3_install_path'\ Lib \ site-packages(例如E:\ ProgramData \ Anaconda3 \ Lib \ site-packages)中删除与tensorflow,keras,protobuf相关的折叠。
  4. 安装下图所示的tensorflow和keras。 conda settings which can solve this issue

答案 4 :(得分:1)

此问题主要来自pip(python软件包管理器)的异常操作

就我而言,我的一个名为protobuf的软件包中有一个问题无法通过使用pip uninstall命令删除。因此,我手动进行了操作,然后可以正确使用tensorflow。

希望这对某人有所帮助。

答案 5 :(得分:0)

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

问题在于,张量流的路径在我的PC上没有变化。 我无法导入tensorflow,尽管我可以提前几个小时。 在python交互式shell上尝试“导入tensorflow”。如果您无法导入它,那么您的问题将与我的相同。

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

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

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

答案 6 :(得分:0)

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

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 :(得分:0)

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

解决方案是使用“ 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

答案 8 :(得分:-1)

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

执行以下命令将解决问题

sudo pip install --upgrade tensorflow-gpu

相关问题