![v2-c3618c1394da2e93c5905f2e755e64c5_1440w.jpg?source=172ae18b](http://img-03.proxy.5ce.com/view/image?&type=2&guid=42c07510-da2e-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-c3618c1394da2e93c5905f2e755e64c5_1440w.jpg?source=172ae18b)
keras为tensorflow提供了封装更加高级的API,如果读者不想了解tensorflow的细节,那么keras将会是一个可以“偷懒”的选择。
keras官方github链接:
https://github.com/keras-team/kerasgithub.com安装环境:
- 操作系统:win10 教育版
- python版本:3.6.2
- tensorflow-gpub版本:1.6.0
- keras版本:2.1.6
值得注意:
- 建议使用CUDA 9.1版本
- 建议使用python 3.6版本
- 注意CUDA、cudnn、Python、tensorflow版本之间的匹配
- 激活tensorflow环境 ≠ 安装tensorflow
- 先安装tensorflow-gpu,再安装keras
1.安装tensorflow-gpu框架
1.1 下载CUDA工具包。
CUDA Toolkit Archivedeveloper.nvidia.com1.2 下载cudnn。将cudnn的解压下的三个文件bin , include , lib 对CUDA安装目录下的同名文件进行替换
https://developer.nvidia.com/rdp/cudnn-download#a-collapse705-91developer.nvidia.com1.3 搭建tensorflow环境 。以win+R打开cmd窗口,键入:
conda create -n tensorflow-gpu python=3.6
1.4 激活tensorflow-gpu环境。在cmd窗口,键入:
activate tensorflow-gpu
1.5 安装tensorflow。方法1(不推荐),键入:
pip install --ignore-installed --upgrade tensorflow
方法2:先安装好.whl文件,因为目前的tensorflow不支持高版本的CUDA。笔者提供一个适用于CUDA9.1的.whl文件,提取码:n78t
https://pan.baidu.com/s/1dXhgsbzrcWKMdH5q_RPTfQpan.baidu.com将其复制到C:WindowsSystem32以后,在cmd窗口,键入:
pip install tensorflow_gpu-1.6.0-cp36-cp36m-win_amd64.whl
1.6 测试tensorflow-gpu安装完成。在cmd窗口,键入:
import tensorflow as tf
hello = tf.constant('hello,TensorFlow!')
sess = tf.Session()
print(sess.run(hello))
2.安装keras框架
2.1安装keras。笔者建议,在cmd里激活tensorflow-gpu,键入:
pip install keras
2.2测试keras安装完成。以下是MNIST手写数字数据集,如果能整成运行,说明keras安装完成。
from keras.datasets import mnist
from keras.utils import to_categorical
train_X, train_y = mnist.load_data()[0]
train_X = train_X.reshape(-1, 28, 28, 1)
train_X = train_X.astype('float32')
train_X /= 255
train_y = to_categorical(train_y, 10)
from keras.models import Sequential
from keras.layers import Conv2D, MaxPool2D, Flatten, Dropout, Dense
from keras.losses import categorical_crossentropy
from keras.optimizers import Adadelta
model = Sequential()
model.add(Conv2D(32, (5,5), activation='relu', input_shape=[28, 28, 1]))
model.add(Conv2D(64, (5,5), activation='relu'))
model.add(MaxPool2D(pool_size=(2,2)))
model.add(Flatten())
model.add(Dropout(0.5))
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(10, activation='softmax'))
model.compile(loss=categorical_crossentropy,
optimizer=Adadelta(),
metrics=['accuracy'])
batch_size = 100
epochs = 8
model.fit(train_X, train_y,
batch_size=batch_size,
epochs=epochs)
test_X, test_y = mnist.load_data()[1]
test_X = test_X.reshape(-1, 28, 28, 1)
test_X = test_X.astype('float32')
test_X /= 255
test_y = to_categorical(test_y, 10)
loss, accuracy = model.evaluate(test_X, test_y, verbose=1)
print('loss:%.4f accuracy:%.4f' %(loss, accuracy))
![v2-c6efb3b5d086f6026584b9935912c016_b.jpg](http://img-01.proxy.5ce.com/view/image?&type=2&guid=42c07510-da2e-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-c6efb3b5d086f6026584b9935912c016_b.jpg)