安装完TensorFlow2.4.1,在测试GPU时报错并返回False?

TensorFlow   2.4.1

CUDA           11.1

CUDNN        8.05

显卡              RTX 2060

之前使用Yolo3-darknet的时候是可以正常使用的

查了一下有人说是版本不匹配的问题,但据我了解TensorFlow 2.4应该是和CUDA 11,CUDNN 8对应的啊

求大佬们帮忙看看

 

怎么跑才有那个问题出现?

我按 TensorFlow 教的:

import tensorflow as tf
print("Num GPUs Available: ", len(tf.config.experimental.list_physical_devices('GPU')))

看错误是少安装了cusolver库

https://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/

我是在Anaconda下装的,但我按网上的说法,发现没有 tensorflow_core 这个文件夹

是不是这个原因?

网上也没有这个文件夹的下载方式,怎么解决呢?

我的:

网上别人的:

 

  1. 安装cuda 及cudnn
  2. 安装  tensorflow-gpu
  3. 下载对应所缺失的 xx.dll文件放到 拷贝到C盘的Windows/System32

解决方法:
进入C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\bin的目录中,会发现里面有上图缺失的_100.dll版本,将对应的100.dll文件复制到桌面,修改文件名为10.dll后,在粘贴到此目录下就ok啦

在这里插入图片描述

在这里插入图片描述

修改后就可以了
bin文件夹下添加的文件如下图,其他类似

我缺少的是整个tensorflow_core文件夹,dll缺失我自己会解决,也没有缺

我今天重新用清华源装了一遍tensorflow,现在返回的是True了,但按道理这里应该会写GPU信息的

而且不管是用PyCharm还是直接在Anaconda Prompt 的tensorflow环境里运行代码,都会提示 ModuleNotFoundError: No module named 'tensorflow.examples'

查了一下都说要下载一个tutorials放Lib\site-packages\tensorflow_core\examples下,但我tensorflow_core这个文件夹都没有,更不用说里面的东西了网上也找不到整个tensorflow_core的下载链接

用这个测

physical_devices = tf.config.list_physical_devices('GPU')
tf.config.experimental.set_memory_growth(physical_devices[0], True)

 

你都写 tutorials,放那还不是一样?

还是不行

 

今天换了tensorflow2.1,可以使用但没有GUP加速,和之前一样的问题,返回Not creating XLA devices, tf_xla_enable_xla_devices not set。

查了说可能是tensorflow和CUDA对不上,又换了CUDA10.1,但测试又返回False了。

又查说可能是显卡驱动和CUDA版本对不上,我的显卡驱动默认是11.1的CUDA,但和CUDA10.1配套的显卡驱动已经找不到官方下载地址了,且似乎不支持我的RTX2060

现在该怎么办?

跑得是哪个例子?Link 在哪里?

TensorFlow 2.4.1 bug 在这个文件夹找东西: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0

我装得最新版本:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2

改成: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0

在 environment 改

CUDA_PATH_V11_2

Path:

重启 PyCharm,一切OK 🙉!

跑这个试 XLA:

import tensorflow as tf

assert (tf.test.gpu_device_name())


def load_data():
    (x_train, y_train), (x_test, y_test) = tf.keras.datasets.cifar10.load_data()
    x_train = x_train.astype('float32') / 256
    x_test = x_test.astype('float32') / 256

    # Convert class vectors to binary class matrices.
    y_train = tf.keras.utils.to_categorical(y_train, num_classes=10)
    y_test = tf.keras.utils.to_categorical(y_test, num_classes=10)
    return (x_train, y_train), (x_test, y_test)


def generate_model():
    return tf.keras.models.Sequential([
        tf.keras.layers.Conv2D(32, (3, 3), padding='same', input_shape=x_train.shape[1:]),
        tf.keras.layers.Activation('relu'),
        tf.keras.layers.Conv2D(32, (3, 3)),
        tf.keras.layers.Activation('relu'),
        tf.keras.layers.MaxPooling2D(pool_size=(2, 2)),
        tf.keras.layers.Dropout(0.25),

        tf.keras.layers.Conv2D(64, (3, 3), padding='same'),
        tf.keras.layers.Activation('relu'),
        tf.keras.layers.Conv2D(64, (3, 3)),
        tf.keras.layers.Activation('relu'),
        tf.keras.layers.MaxPooling2D(pool_size=(2, 2)),
        tf.keras.layers.Dropout(0.25),

        tf.keras.layers.Flatten(),
        tf.keras.layers.Dense(512),
        tf.keras.layers.Activation('relu'),
        tf.keras.layers.Dropout(0.5),
        tf.keras.layers.Dense(10),
        tf.keras.layers.Activation('softmax')
    ])


def compile_model(model):
    opt = tf.keras.optimizers.RMSprop(lr=0.0001, decay=1e-6)
    model.compile(loss='categorical_crossentropy',
                  optimizer=opt,
                  metrics=['accuracy'])
    return model


def train_model(model, x_train, y_train, x_test, y_test, epochs=25):
    model.fit(x_train, y_train, batch_size=256, epochs=epochs, validation_data=(x_test, y_test), shuffle=True)


def warmup(model, x_train, y_train, x_test, y_test):
    # Warm up the JIT, we do not wish to measure the compilation time.
    initial_weights = model.get_weights()
    train_model(model, x_train, y_train, x_test, y_test, epochs=1)
    model.set_weights(initial_weights)


(x_train, y_train), (x_test, y_test) = load_data()
model = generate_model()
tf.keras.backend.clear_session()
tf.config.optimizer.set_jit(True)  # Enable XLA.
model = compile_model(generate_model())
(x_train, y_train), (x_test, y_test) = load_data()

warmup(model, x_train, y_train, x_test, y_test)
train_model(model, x_train, y_train, x_test, y_test)

 

同理,在 Linux 和 macOS,跑上面的程式,看看 TensorFlow 2.4.1 在哪里找东西,把文件夹改或者搬过去。

你这回答的。。。

最基础的环境变量我肯定会设置的啊,而且我说过了我不缺DLL,缺失tensorflow_core的原因我也找到了,2.4版本就是没有这个模块的,我现在的问题就只有返回Not creating XLA devices, tf_xla_enable_xla_devices not set,正常应该会返回GPU0之类的,你可以试试你返回的是啥

不是跑哪个测试程序,是刚装完测试GPU的时候,tf.test.is_gpu_available()返回的,跑程序时也会出现,但似乎没啥影响

感觉你从头到尾回答的都是牛头不对马嘴,说的都是一些最基本的环境搭设,这些最基础的东西真没必要说这么多。。。。

我现在跑程序只会报错GPU占用过高,用任务栏管理器看独显的GPU占用一直是0,专用内存倒是基本占满了,跑程序应该是没啥问题,我现在就只想知道为啥会返回Not creating XLA devices, tf_xla_enable_xla_devices not set,以及有没有什么解决方法

要不是我的显卡驱动总是卸载不干净,2060好像还不支持太低版本的显卡驱动,我就换一个tensorflow1了。。。。

如果你也装的是最新版本的tf2.4,你看看你的tensorflow2.4\Lib\site-packages有没有tensorflow_core这个文件夹