【问题标题】:Multiple versions of Tensorflow causing issues多个版本的 Tensorflow 导致问题
【发布时间】:2019-12-17 07:29:00
【问题描述】:

长话短说:我使用了一个 Amazon EC2 实例,并尝试使用这个名为 Ampligraph 的包,它在内部使用 TensorFlow(TF)。我使用这个installation guide 通过 PIP 安装了它。我运行以下脚本将模型加载到系统中。

from ampligraph.utils import restore_model
model = restore_model(model_name_path = model_path)

它给了我`AttributeError:模块'tensorflow'没有属性'random'

我关注了多个 StackOverFlow 帖子,例如 this,并了解到我的 TF 版本有问题。

当我运行以下命令检查 TF 版本时

python3 -c 'import tensorflow as tf; print(tf.__version__)'

这是我得到的:

I tensorflow/stream_executor/dso_loader.cc:126] Couldn't open CUDA library libcudnn.so.5. LD_LIBRARY_PATH: /usr/local/cuda/lib64:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64
I tensorflow/stream_executor/cuda/cuda_dnn.cc:3517] Unable to load cuDNN DSO
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcufft.so.8.0 locally
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcuda.so.1 locally
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcurand.so.8.0 locally
/home/ubuntu/.local/lib/python3.5/site-packages/tensorflow/python/framework/dtypes.py:455: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
  _np_qint8 = np.dtype([("qint8", np.int8, 1)])
/home/ubuntu/.local/lib/python3.5/site-packages/tensorflow/python/framework/dtypes.py:456: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
  _np_quint8 = np.dtype([("quint8", np.uint8, 1)])
/home/ubuntu/.local/lib/python3.5/site-packages/tensorflow/python/framework/dtypes.py:457: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
  _np_qint16 = np.dtype([("qint16", np.int16, 1)])
/home/ubuntu/.local/lib/python3.5/site-packages/tensorflow/python/framework/dtypes.py:458: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
  _np_quint16 = np.dtype([("quint16", np.uint16, 1)])
/home/ubuntu/.local/lib/python3.5/site-packages/tensorflow/python/framework/dtypes.py:459: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
  _np_qint32 = np.dtype([("qint32", np.int32, 1)])
1.0.1

所以,我知道TF的版本是1.0.1(最后一行)。

再次,我通过 pip 安装了 TF:

sudo pip3 install tensorflow==1.13.1

安装成功。但是,当我运行命令检查 TF 版本时,它显示与上面相同的消息,并且版本仍然是 1.0.1

我做错了什么?

抱歉,帖子太长了 谢谢!

【问题讨论】:

  • 首先,检查pip3是否匹配别名为python3的解释器(运行pip3 --version并检查解释器版本是3.5)。其次,您可能同时为同一个解释器安装了两个版本的tensorflow - 全局版本(通过sudo pip3 install tensorflow 安装)和仅用户版本(通过pip3 install tensorflow --user 安装,注意没有使用sudo)。要检查这一点,请运行 pip3 list --user 并检查是否列出了 tensorflow。如果是,请卸载用户专用的 (pip3 uninstall tensorflow --user) 或升级它。
  • 您能否将其添加为答案。对我来说效果很好,愿意接受。

标签: python python-3.x tensorflow pip knowledge-graph


【解决方案1】:

首先,检查pip3是否匹配别名为python3的解释器:运行

$ pip3 --version

并检查解释器版本是否为 3.5。示例输出:

pip 19.3.1 from /usr/lib64/python3.5/site-packages/pip <b>(python 3.5)</b>

如果版本不匹配,则说明您安装了多个 Python 版本,pip3 安装了其他 Python 版本的软件包。确定 Python 3.5 的别名为 pip 的命令(例如 pip3.5python3.5 -m pip)并使用正确的命令重新安装 Python 3.5 的 tensorflow

其次,您可能同时为同一个解释器安装了两个版本的tensorflow - 全局版本(通过sudo pip3 install tensorflow 安装)和仅供用户使用的版本(通过pip3 install tensorflow --user 安装,注意没有使用sudo )。要检查这一点,请运行:

$ pip3 list --user

并检查是否列出了tensorflow。如果是,请卸载用户专用的:

$ pip3 uninstall tensorflow --user

或升级它并卸载全局:

$ pip3 install tensorflow --upgrade --user
$ sudo pip3 uninstall tensorflow -y

【讨论】:

  • 非常感谢。我做了第一步: pip3 --version 并得到了类似的输出。但是,我为同一个用户提供了 2 个版本的 tensorflow,gpu 和 cpu 一个。删除了 gpu 版本并开始工作。
  • 很高兴能帮上忙!
猜你喜欢
  • 1970-01-01
  • 2016-09-06
  • 2022-01-01
  • 2021-08-23
  • 2011-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多