通过conda-forge安装tensorflow-gpu导致使用仅CPU的tensorflow

时间:2018-09-20 13:37:31

标签: python tensorflow conda

我正在创建一个仅供使用tensorflow-gpu频道中的conda-forge软件包的conda环境

conda create -n tst -c conda-forge tensorflow-gpu

这将同时安装tensorflow-gpu tensorflow软件包:

The following NEW packages will be INSTALLED:

    _tflow_1100_select: 0.0.1-gpu
    ...
    tensorboard:        1.10.0-py36_0         conda-forge
    tensorflow:         1.10.0-py36_0         conda-forge
    tensorflow-gpu:     1.10.0-hf154084_0
    ...

然后,当我导入tensorflow时,它看不到GPU:

>>> import tensorflow as tf
>>> tf.test.is_gpu_available()
2018-09-20 15:29:21.778708: I T:\src\github\tensorflow\tensorflow\core\platform\cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
False

问题:

  • 为什么仅需要conda时,conda会同时安装tensorflow-gputensorflow软件包?
  • 这两个程序包能否和平共处,如果可以的话,如何在两者之间切换?
  • 要点:为什么从主渠道conda create -n tst tensorflow-gpu安装时一切正常? (我没有根据的猜测是,在conda-forge中,tensorflow-gpu软件包实际上来自主渠道,因此在导入期间的优先级较低。)

1 个答案:

答案 0 :(得分:0)

通过查看conda-forge(https://conda-forge.org/feedstocks/)上的软件包列表,可以发现那里没有tensorflow-gpu软件包。在conda-forge和默认的anaconda软件包之间存在一些奇怪的兼容性问题-我通常会尽量避免两者混淆。

即使您以conda install -c anaconda tensorflow-gpu的身份安装,它也会同时插入非GPU tensorflow程序包,但仍在运行

from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())

找到GPU。因此,它似乎会自动使用支持GPU的版本。如果我想避免使用GPU,则可以使用with tf.device([CPU ID here])来包装我的培训。