首先,我配置的环境是在ubuntu16.04系统下,首先安装了英伟达384驱动,然后安装了Anaconda3 5.2.0版本,然后就是keras-gpu框架和spyder编辑器。如果你想配置的环境与我的环境差的比较大,那我建议你不要按照我的方法继续进行下去,因为一点小小的错误都有可能造成全盘皆输的后果,甚至你都不知道哪里错了,需要重装系统才能继续重来!谨慎!谨慎!谨慎!
安装英伟达驱动是个大坑,我就因为这个驱动安装过程中出了一点错误重装过我的系统,现在推荐一个我自己试过可以安装且比较容易的方法。首先要先查看自己的gpu支持的驱动,我的gpu是gtx 950m,对应的驱动是384,不同gpu对应的驱动是不一样的!然后就是打开软件和更新,如下图-1所示,选择使用英伟达的驱动,这里能用的驱动正好和我需要的驱动一个版本,我不知道大家都是这样还是只有部分人这样,如果不是这样,那就要具体情况具体分析了,如果一样的话点击应用更改,如果应用成功那英伟达的驱动就装好了。重启之后可以在终端输入nvidia-smi,图-2是我电脑的结果。如果能够成功查看gpu信息说明驱动已经安装成功了,距离成功也就半步之遥了!
图-1
图-2
安装Anaconda3 5.2.0 ,安装之后对应打python版本应该是python3.6.5。
官方下载比较慢,可以直接下载清华镜像。选择适合自己的版本就可以了,我推荐安装Anaconda3 5.2.0,亲测没有问题,其他版本建议先百度看有没有问题再下载安装。
https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
图-3
下载完之后打开终端,移动到文件存储的位置。再安装文件。
bash Anaconda3-5.2.0-Linux-x86_64.sh
版本不一样文件名字也会不一样,不要直接运行我的指令。
之后会询问是否要把anaconda添加进路径什么的,一律yes就行了,还有还会问是否安装vscode,这个装不装无所谓,我选了yes也没安装成功,提示我下载失败,应该是从国外下载资源太慢了,失败了我也就没装了,反正装不装也无所谓。
关闭终端,再打开,输入conda安装命令看是否可用。如果终端输出如图-4所示,则安装成功,接着查看python版本。我的结果如图-5所示,可以看到我的python版本是3.6.5,后边还有一个anaconda,说明这个python是通过anaconda安装到电脑上的。
图-4
图-5
接着就比较简单了,安装Keras
conda install keras-gpu
在安装keras-gpu的过程中,会自动帮我们安装cuda9.0,tensorflow1.9,keras-gpu-2.2.2等,省去了很多的麻烦,直接输入yes,等待安装完成就可以了。
我自己比较习惯用spyder编辑器,在安装的过程中,终端给我报了一个错误,但是奇怪的是spyder居然是可以正常使用的。我到现在也不知道这个错误是怎么回事,但是环境配好了就行,大不了以后换个编辑器,也不是一定要用spyder。
下面是测试代码:
import tensorflow as tf
from keras.datasets import mnist
from keras import models
from keras import layers
from keras.utils import to_categorical
with tf.device('/cpu:0'): #选择使用的设备,设备编号之前已经得到
(train_images,train_labels),(test_images,test_labels)=mnist.load_data()
network=models.Sequential()
network.add(layers.Dense(512,activation='relu',input_shape=(28*28,)))
network.add(layers.Dense(10,activation='softmax'))
network.compile(optimizer='rmsprop',loss='categorical_crossentropy',metrics=['accuracy'])
train_images=train_images.reshape((60000,28*28))
train_images=train_images.astype('float32')/255
test_images=test_images.reshape((10000,28*28))
test_images=test_images.astype('float32')/255
train_labels=to_categorical(train_labels)
test_labels=to_categorical(test_labels)
network.fit(train_images,train_labels,epochs=5,batch_size=32)
运行结果如下:
图-6