简单记录TensorFlow2-gpu配环境的几个坑

简单记录TensorFlow2-gpu配环境的几个坑

  • 简单记录TensorFlow2-gpu配环境的几个坑

简单记录TensorFlow2-gpu配环境的几个坑

时间紧,简单记个流水账。

Win10上安装了Anaconda3-2019.10-Windows-x86_64,
Spyder中pip tf-nightly-gpu 装上了最新版的tf2.2,
装cuda10.2,装cudnn,显卡gtx1650,吃鸡一般香。
运行如下代码:


import tensorflow.keras as keras
import matplotlib.pyplot as plt
import tensorflow as tf
from tensorflow.keras import layers

(train_images, train_labels), (test_images, test_labels) = keras.datasets.fashion_mnist.load_data()
class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat', 
               'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']
print(train_images.shape)
print(train_labels.shape)
print(test_images.shape)
print(test_labels.shape)

plt.figure()
plt.imshow(train_images[0])
plt.colorbar()
plt.grid(False)
plt.show()

train_images = train_images / 255.0

test_images = test_images / 255.0
plt.figure(figsize=(10,10))
for i in range(25):
    plt.subplot(5,5,i+1)
    plt.xticks([])
    plt.yticks([])
    plt.grid(False)
    plt.imshow(train_images[i], cmap=plt.cm.binary)
    plt.xlabel(class_names[train_labels[i]])
plt.show()

model = keras.Sequential(
[
    layers.Flatten(input_shape=[28, 28]),
    layers.Dense(128, activation='relu'),
    layers.Dense(10, activation='softmax')
])

model.compile(optimizer='adam',
             loss='sparse_categorical_crossentropy',
             metrics=['accuracy'])

model.fit(train_images, train_labels, epochs=5)

model.evaluate(test_images, test_labels)

注意,以上代码虽然是网上的例子,但是经过我微调的,比如plt那里,原版例子无法运行。载入数据集也没有一次成功,同样代码运行多次才成功载入,猜测是网络问题。
代码运行报错,大概是关于cuda中dll的版本问题,可能是这个提示(记不太清):“ Could not load dynamic library ‘cudart64_101.dll’; dlerror: cudart64_101.dll not found”

好一个折腾,网上有人说的文件改名方法不好用,最后解决方法是装了cuda10.1,再装对应cudnn。我装的是cuda10.2,为啥要10.1的文件?

再运行,旧问题解决,出现新问题,Spyder的ipython console给出了红色标题的错误提示,但虽然标题上说是错误error,内容里面却没有错误error,只有个警告,关于什么cpu指令编译的。摸不着头脑,请教武汉的师弟,他似乎也没有遇到过。于是继续摸索。
看python中有显示amd64,以为cpu识别错了,我cpu是i7,后经证实与此无关,师弟的Intel也显示amd64.

spyder中运行

pip uninstall tf-nightly-gpu

竟然没有响应,试了多次都是这样,一气之下连anaconda也一起卸载了。再重新安装anaconda,不装nightly,改为

pip install tensoflow-gpu

竟然又没有响应,无语。猜测我的python进入了一个异常状态,pip不能用,这可能也是刚才不能卸载的原因。
直接下载TensorFlow安装包,tensorflow_gpu-2.1.0-cp37-cp37m-win_amd64.whl,在Spyder中安装它,又没响应,天哪,这是咋了,这可是新装的anaconda,不至于坏的这么彻底,从卸载前坏到现在~!

受师弟启发,anaconda中有命令行可用,在命令行中安装它tensorflow_gpu-2.1.0-cp37-cp37m-win_amd64.whl,竟然成功了!!Spyder和命令行有这么大差别!

cuda和cudnn 没动,再次运行前述程序,竟然成功了,耶!任务管理器-性能中能看到gpu在运算时9%左右的使用率。在命令行中也能运行这个程序,不过弹出的图片必须叉掉才能继续,但是运行结果似乎有点问题,与Spyder不一样,没来得及深入下去。

回过头来再看,为啥成功了,可能是因为原先那个tf-nightly-gpu 2.2有问题,换成TensorFlow-gpu2.1就好了

环境配到此,已经折腾了好几天,成果来之不易。

你可能感兴趣的:(tensorflow,anaconda,gpu,cuda)